help-gsl
[Top][All Lists]

## Re: [Help-gsl] Help-gsl Digest, Vol 101, Issue 6

 From: 张庆岭 Subject: Re: [Help-gsl] Help-gsl Digest, Vol 101, Issue 6 Date: Fri, 16 Mar 2012 10:42:29 +0800

Hi Brian,
Thank you for your reply! And really sorry for the confusion. Actually, I
have two functions R(r) and T(r), which are 2D radially symmetric function,
where r=sqrt(x^2+y^2). And now I estimated R(r) and T(r)(1D profile) from
some other place. Then I want to compute the convolution of R and T. So the
steps should be:
1. create 2D radially symmetric function from 1D profile
2. transform 2D radially symmetric function using 2D DFT and do
element-wise multiplication in frequency domain
3. transform the result in the 2nd step back to 1D profile
And the reason why I am using Hankel transform is that 1D DHT(with
0th-order of Bessel function of the first kind) is equal to the 2D DFT. So
I don't have to transform the 1D profile to 2D radially symmetric function
and again transform the 2D result back to 1D profile. And secondly, I
noticed that for most of cases, the frequency coefficients of DHT are real
numbers, but for DFT the coefficients maybe complex numbers. But I will use
one formula in next step which need the frequency coefficients are real
numbers.
And now my problem is that I think I should multiply a coefficient before
F_out, which is the inverse hankel transform of F(the element-wise
multiplication of R and T in frequency domain). But I don't know whether
this coefficient is still  j_(\nu,M)) or some other value.
Really thanks for any help!

> Qingling,
>
> I don't understand the role of the Hankel transform in your question.  Why
> not simply compute the convolution using DFTs?
>
> Brian
>
> On Thu, Mar 15, 2012 at 9:00 AM, <address@hidden> wrote:
> >
> > Date: Thu, 15 Mar 2012 17:12:18 +0800
> > Subject: [Help-gsl] A question about the Discrete Hankel Transform
> >
> > Hi all,
> > Sorry for disturbing, this is the first time I am using mailing lists and
> > don't know whether this is a proper place to ask questions. But I
> > encountered some problem and really need some help.
> > I am encontered some problem in calculating the inverse hankel transform
> of
> > functions. Let's say the function is R=[r1,r2,r3,r4], I used
> gsl_dht_apply,
> > in
> >
> >
> http://www.gnu.org/software/gsl/manual/html_node/Discrete-Hankel-Transform-Functions.htmlto
> > get the hankel transform, like this gsl_dht_apply(dht,R,R_out) and
> > used
> > gsl_dht_apply(dht,R_out,R_prime) to get the inverse transform. It
> satisfies
> > R=coef*R_prime, where coef=j_(\nu,M) according to the documentation of
> > gsl_dht_apply function.
> > And now my problem is that for two functions R=[r1,r2,r3,r4] and
> > T=[t1,t2,t3,t4] in time domain, I want to compute the convolution of them
> > according to the Convolution Theorem, saying that the convolution of two
> > functions in time domain is the inverse Fourier Transform of two
> functions
> > element-wise multiplication in the frequency domain, and Hankel Transform
> > of the 0-order Bessel function of first kind is equal to 2D fourier
> > transform. Let's say R_out=[ir1,ir2,ir3,ir4] and T_out=[it1,it3,it3,it4]
> > are the inverse hankel transform of R and T respectively. Let F be the
> > element-wise multiplication of R_out and T_out, that is
> > F=[ir1*it1,ir2*it2,ir3*it3,ir4*it4]. Then how can I get the original
> > convolution result of R and T? Is it still R**T=coef*F_out or should I
> > multiply some other coeficient?(** stands for convolution and F_out is
> the
> > inverse hankel transform of F, coef=j_(\nu,M)).
> > Thanks for help!
> >
> > --
> > ???
> > Qingling Zhang
> > Institute of CG & CAD
> > School of software Tsinghua University
> > Tsinghua University Beijing, P.R.China 100084
> >
>

--

Qingling Zhang