help-gsl
[Top][All Lists]

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

 From: Brian Hawkins Subject: Re: [Help-gsl] Help-gsl Digest, Vol 101, Issue 6 Date: Fri, 16 Mar 2012 21:27:06 -0700

Quingling,

That's interesting.  I have a lot of experience with DFTs but none with the
Hankel transform.  My limited understanding is that the convolution can be
carried out in this way for two radially symmetric functions as you say.
The scalar coefficient should be the same, though the documentation says
it's the square of what you said.  A simple check would be to forward and
inverse transform the Kronecker delta function, e.g. the sequence [1, 0, 0,
0, ..., 0].

Regards,
Brian

On Thu, Mar 15, 2012 at 7:42 PM, 张庆岭 <address@hidden> wrote:

> 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!
>
> 在 2012年3月16日 上午1:03，Brian Hawkins <address@hidden>写道：
>
> 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
> Institute of CG & CAD
> School of software Tsinghua University
> Tsinghua University Beijing, P.R.China 100084
>