Continuous convolution and the (inverse) FFT
Mostrar comentarios más antiguos
I'm a man deeply rooted in the continuous Fourier transform, and am generally altogether befuddled by the conventions of the discrete Fourier transform. Now, unfortunately, I'm faced with the following problem:
Calculate the continuous convolution of a function f(omega') and g(omega') at omega. Numerically, I have sampled these functions at negative&positive equidistantly spaced values omegan (from -Omega to Omega in N points) with associated values fn and gn. I want the convolution evaluated at omegan as well. Enter the FFT: from the convolution theorem, I know that I can jump back and forth, and the FFT should allow me to do so with a favorable computational scaling.
Unfortunately, I cannot make it work - perhaps, this is an issue of not understanding the (non)dimensionalized form assumed in the DFT, perhaps it is related to zeropadding and cyclic-vs-linear DFTs, or perhaps fftshift needs to be involved: regardless, my attempts do not resolve the issue.
Therefore: for the above problem, what must I do to find the convolution at omegan?
My naive attempt does not do the job (ignoring scaling factors):
fgn_conv = fft(ifft(fn).*ifft(gn))
Any assistance is much appreciated! Thanks!
4 comentarios
David Goodmanson
el 5 de Abr. de 2017
Hello Thomas, I don't quite understand what you mean by getting the convolution 'evaluated at omegan' since the convolution should give you a vector of N values, with an independent variable that includes zero and has spacing omegan.
Do the functions fn and gn die out at each end of the array, or do they have significant nonzero values at either end?
Thomas
el 5 de Abr. de 2017
David Goodmanson
el 5 de Abr. de 2017
Hi Thomas, I confess I am not getting it yet. You refer to omegan as a sampled range, as if it would contain a set of points. But you also refer to 'the value of omegan' as if it is one quantity, and the original question says, 'sampled these functions at negative&positive equidistantly spaced values omegan (from -Omega to Omega in N points)' as if omegan is the spacing between points. Do your arrays fn and gn contain nonzero values only at isolated points?
Thomas
el 5 de Abr. de 2017
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Fast Fourier Transforms en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!