Last fall I started posting occasionally about Fourier transforms. This topic causes much confusion, which is particularly unfortunate given how many people are interested in it.
I speculate that the fundamental source of confusion is that there are really several different (but related) transforms that go by the name "Fourier transform." Most people who encounter the Fourier transform only know about one form, and the confusion starts when they encounter another form which doesn't seem to have the same properties as the one they learned.
To address that confusion, I have previously described three of the four basic forms of Fourier transform: the continuous-time Fourier transform, the discrete-time Fourier transform, and the discrete Fourier transform. And I've described the relationships between them.
Well, now it's been a few weeks since my last Fourier transform post, and I'm thinking about where to go next. I'd like to get your feedback and advice about this.
I've reviewed my own notes and brainstormed a bit, and I've also reviewed all of your posted comments. In no particular order, here are some possible follow-up topics.
- Sampling theorem and the strict inequality issue raised in a comment thread
- Positive and negative frequencies
- How to make DTFT-style plots (1-D, 2-D, and labeling in units of pi)
- How to make a frequency-domain plot labeled with physical frequency units
- How to make a frequency-domain plot labeled with other units (wavenumber, km)
- Things that surprise about the DFT (why complex? why zero-frequency at the left? why doesn't it look right for a "pure" sinusoid?)
- What's the deal with fftshift? When do I need to use it and why?
- Symmetry properties for the DFT (they're all circular!)
- Frequency-domain-based filtering
- Gibbs phenomenon and ringing
- Importance of phase information for images
- Revisit visualization techniques for Fourier transforms of images
What would you like for me to add this list? What surprises you or puzzles you about the output of the fft function? Please let me know by posting a comment.
Get the MATLAB code
Published with MATLAB® 7.10
26 CommentsOldest to Newest
Fourier transform unevenly sampled data.
I like BjornG’s suggestion about unevenly sampled data because you get the very cool result of a non-periodic spectrum and the Nyquist limit no longer applies.
Another topic that my students struggle with is spectral leakage and the notion that a single FFT channel is a fairly average bandpass filter.
Writing about Ringing / Gibbs Phenomenon and how to reduce it when applying Linear Filtering would be great to read about.
Of course as part of “Frequency Domain Filtering” :-).
I’ve never truly understood the concept of negative frequencies, I’d love to hear a detailed explanation of this topic – the what and why! Also the complexity topic would be a good one.
All the topics you posted sound interesting…
Apart from my activities at sagivTech, I am part of a research group at the Technion, Israel Institute of Technology.
I will be happy to write a post on the the role of phase in Fourier Analysis, a topic we deal with in the last 3 years.
What do you say ?
Can you help me with the plot command for the Figure 11.22(page 471) which is to plot the spectral energy texture in the book of “Digital Image Processing using MATLAB” by Gonzales,2004. TQ
Chen—I was just looking for topic suggestions. I think I can handle the writing part.
Spectral—What kind of help are you looking for? Those plots are explained in Example 11.11 in the book.
Of all these options, the Gibbs phenomenom would be the most interesting one to me.
I hope you write about it in one of the next posts.
Unevenly sampled data would be interesting for me.
Another suggestion is the topic of frequency resolution and interpolation (e.g. by zero-padding or chirp-z transform).
The significance of phase will be very interesting for sure! Mostly, people know how to interpret and use the magnitude. But, what does phase mean, and how one can take advantage of it will be useful.
For me, a good overview of different ways of plotting frequency response would be good. For example, how to best plot the frequency response of a filter. In an IP course I just finished, we learned to plot from -.5 to +.5 in both u and v, which was referred to as a unit cell of the inverse lattice. From what I recall, the code examples in DIPUM give results over a different range. My point here is that it seems there are different approaches to teaching, plotting, and understanding frequency domain plots and the FT, so it would be good to be able to relate them to one another.
So, I’d like to see a good overview of various ways to plot response, and how to understand frequency response plots in terms what frequencies are present, and what those frequencies mean in terms of real space, i.e. are we talking about cycles per picture height (c/ph), cycles per pixel, etc.
Also, the Fourier Spectra plots have never really made a lot of sense to me, and usually just look like a lot of noise, so an introductory explanation of how to interpret them would be great too.
Better understanding these topics I think would be helpful in clearing up a lot of peoples’ confusion about the FT, and would allow many people to better understand more advanced topics that other posteres have so far requested here, e.g. Gibbs, Ringing, etc.
A seemingly simple exercise which actually requires an in depth knowledge of how a FFT works is to create a sine wave with a know frequency and then recover this frequency from the FFT of the signal. This leads to discussions of the periodicity of the FFT and the implicit rectangular window it applies.
I think that everyone would like some units on the DTFT plots in 2D. I am interested in Fourier transforms from a pure optics perspective, with diffraction of coherent light. I’d love to see some examples using periodic lines, circular apertures, random interlinking circles, and be able to look at the diffraction pattern, and have a QUANTITATIVE way to determine which pattern has the lowest amount of diffraction. Now, it’s sort of a qualitative look at which pattern has the lowest side lobes. Could this be something that you would look into?
I tag to Simon’s comment. I too would like to see different ways of plotting results and how that may be useful in different/applications/disciplines. Working with potential field data I am interested in how the frequency/domain results could be plotted in units of kilometers, which is a nice way to allow designing of bandpass (or other) filters with specific spatial bandwidths – therefore making it simpler to link the filtering process to the size of features one wants to pass/reject in the input data.
A little selfishly I’d vote for Gibbs phenomenon and ways of reducing it via Lanczos sigma factors, because this seems useful and very underdeveloped. http://www.mathworks.com/matlabcentral/newsreader/view_thread/281157#742333
Is there a way to extract phase info from spatial frequency plots that is not limited to mod 2 pi recycling?
I’ve always been interested in DFTs to find the frequency of single pure sinusoids. I usually think of this as a MATLAB vector multiply of a section of sinusoid with several different frequencies of complex exponential and seeing which ‘comes out on top’ as most similar. You’d expect this to work if the exponential is bang on the right frequency, what I find puzzling about the DFT is that it also works if the frequency is a bit out – and if you interpolate the output you can get a useful answer.
What I find surprising is that this doesn’t seem to work in general. For example when I took a section of linear chirp and MATLAB vector multiplied it by linear chirps of various frequencies and chirp rates (it would be a 2D grid) I got a nice spike if I hit the chirp parameters bang on but no nice ‘near miss’ behaviour to interpolate.
So, what gives? What’s so special in this respect about the DFT? The best explanation I’ve found so far is p164 of Rader and Gold. But any enlightenment you can offer would be great.
Hi Steve, great to see the FT theme will be continuing.
All the topics you suggest sound very interesting- I hope you get to cover them all at some point! Although it’s already a pretty big list.
I think I suggested a few blogs ago that I’d be interested in Gibbs phenomenon and ringing (and I guess this fits in nicely with filtering).
Also phase sounds like a good one (as I work a lot with this at the moment)- I’ve seen some cool examples of images reconstructed just from the phase info to demonstrate it’s importance to vision.
And how about aliasing/anti-aliasing images. How does one best pick the right cut-off frequency for low-pass filtering any given aliased image?
Fen—Once aliasing has occurred, you can’t get rid of it with filtering.
For me it would be particularly interesting how to do image registration based on Fourier Transforms?
I was reading on a book that if you fourier transform an image, separate magnitude and phase, increase or decrease the magnitude by adjusting its exponent, say to 1.2 or 0.98, and recombine with phase through inverse fourier, this amounts to changing the contrast. THe source however was uniquely ppor in details. Would you care to elaborate on why this works?
Matteo—I’m not familiar with this technique. I’ll think about it. My initial reaction is that it seems like an awful lot of computation to go through in order to increase contrast.
Thank you Steve
I found an online example, but yet not much detail on the justification.
Hi Steve, I have an image that has high frequency data on top of low frequency data..think nano-scale roughness on top of macroroughness. I want to look at the average roughness of ONLY the nano-scale roughness. Is there a way to do this? It would seem to be related to FFT somehow, but I have x, y and z data. Any help appreciated.
Jenny—A high-pass filter would eliminate the low-frequency stuff that is not of interest. There are some two-dimensional filter design routines in the Image Processing Toolbox, but using them does require some knowledge about digital filtering. Most textbooks on image processing would have information on lowpass and highpass filtering.