[SciPy-user] sine transform prefactor
Lubos Vrbka
lists@vrbka....
Sat Jul 26 11:24:48 CDT 2008
hi,
> I don't know a whole lot about transforms however, I do remember one bit of
> information that may be useful to you: The prefactors in the sine transform
> (which is of course related to the fourier transform) are actually matters
> of convention. The sqrt(2/pi) is not always the prefactor! The prefactor
> is usually chosen to be sqrt(2/pi) so that the inverse transform will also
> have a prefactor of sqrt(2/pi) and there will be some symmetry in the two
> formulas so that they look alike and are easier to remember. However,
> SOMETIMES people chose the transform or inverse transform (I can't recall
> which) to have a 2/pi prefactor, and the other to have no prefactor. I
> comes down to a matter of convention and it doesn't matter which one you
> chose, as long as you are consistent.
well, all this is clear to me.
if i do
iDST(DST(f(r))
on discrete data, i get the original data back (expected result). this
would indicate that
1) either the sqrt(2/pi) norm shouldn't be used for discrete data (why?)
2) the sqrt(2/pi) factor is taken care of somewhere inside the DST
function (how?)
this is the thing i'd really love to know - is the answer 1 or answer 2
correct?
in my opinion, it shouldn't matter what combination of norms i use, as
soon as they are consistent - but at the moment, i have the following
problem. i need to iteratively solve
H(r) = C(r) + C(r)*H(r)
where the star denotes convolution and H and C are functions of
interest. the easiest way to solve this should be fourier transforming
this, solving
H(k) = C(k) + C(k)H(k)
by
H(k) = C(k)/(1-C(k))
and then transforming H(k) back for further processing. in practice, i
calculate C, transorm it into fourier space, solve for H and transform
it back, where it serves as a 'parameter' for new C.
due to the nature of my functions, the 3D-FT can be replaced by 1D
fourier-bessel transformation AND some constants. depending on how one
distributes the normalization of FT, one arrives at, e.g.,
FB(f(r)) = f(k) = 4pi/k int_0^infty f(r) r sin(kr) dr
iFB(f(k)) = f(r) = 1/2rpi^2 int_0^infty f(k) k sin(kr) dk
this can be calculated using fourier-sine transform of a new function
F(r)=f(r)*r and F(k)=f(k)*k, respectively
FB(f(r)) = 4pi/k sqrt(pi/2) int_0^infty F(r) sin(kr) dr
iFB(f(r)) = 1/2rpi^2 sqrt(pi/2) int_0^infty F(k) sin(kr) dk
so one would expect that the story is clear - do fourier-sinus, multiply
with the respective normalization constant... but the problem is, that
this doesn't work.
at this point i asked the question - *should* i actually use these
factors (coming from continuous transforms) also in the case of discrete
transforms, which are self normalized to a number of discretization points?
> PS> Dear Everyone, I am trying to get my email mailing list style fixed so
> that I don't break mailing list etiquette. Please email me personal to
> check me if this email sucked. Sorry for my previous mistakes!
just a comment - don't change the subject line, since it breaks the thread
best,
--
Lubos _@_"
http://www.lubos.vrbka.net
More information about the SciPy-user
mailing list