[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Hankel (Fourier-Bessel) Transform



Georg.Pabst@nrc.ca (Georg Pabst) writes:

>Hi,

>I'm looking for the Hankel (Fourier-Bessel) Transform, i.e.,
>int(0,infinity) f(t)*BesselJ(t*r)t dt being implemented in IDL.

>There is a paper "Siegman A. 1980. Quasi fast Hankel transform. Opt.
>Lett. 1, 13-15" and one can also find the code in Fortran or C...

>Thanks,
>Georg

Here's an old program that I think might be what you need.

Bill Thompson



	FUNCTION HANKEL,F
;
;  This function returns the Hankel transform of the argument.
;
	S = SIZE(F)
	IF S(0) NE 1 THEN BEGIN
		PRINT,'*** Variable must be a one-dimensional array, name= F, routine HANKEL.'
		RETURN,F
	ENDIF
;
	X = INDGEN(F)
	K = ( 2. * !PI / FLOAT(N_ELEMENTS(X)) ) * X
	SC = 0.*X + 1.
	IF N_ELEMENTS(SC) GT 3 THEN BEGIN
		SC(0) =  3.D0 /  8.D0
		SC(1) =  7.D0 /  6.D0
		SC(2) = 23.D0 / 24.D0
	ENDIF
;
	H = BES0( K # X )  #  ( K * F * SC )
;
	RETURN,H
	END