Get in touch!
Raphael Assier
  • Home
  • Research
    • Research Interests >
      • Canonical Scattering Problems
      • Combustion Instability
    • Publications
    • Awards & Grants
    • Conferences
    • Events organisation
    • Students & PDRAs
    • Opportunities
  • Teaching
    • Courses Taught
    • Fourier Tutorial >
      • Section I
      • Section II
      • Section III
      • Section IV
      • Section V
      • Section VI
      • Section VII
  • Career
  • Contact

A Hitchhiker's Guide to the FFT

Section I
Section II
Section III
Section IV
Section V
Section VI
Section VII

VI. Recovering the Continuous Fourier Transform

Despite all the good results presented in the previous sections, the results given by the fft are far from looking any close to the actual Continuous Fourier transform that we are interested in. Hence the term fft (for Fast Fourier Transform) can be a bit confusing since it does not return the Fourier Transform but returns the Discrete Fourier Transform instead. When solving mathematical problems, one is often interested in the Fourier Transform (and not the discrete Fourier Transform...). Hence the output of the fft has to be modified in order to approximate the Continuous Fourier Transform presented in Figure 2.

VI.1 Adaptation of the frequency axis

First of all, according to Section III.1, the frequency axis has to be scaled to pass from \(k\) to \(\omega\). This can be done by typing:

omega_fft=2*pi*k_fft/P;

But in Figure 2, the frequency values are also ''centred'' around zero. Hence our axis also needs to be centred. This can be done by typing:

omega_fft_centred=unwrap(fftshift(omega_fft)-2*pi);

Finally, according to Section IV, the frequency axis needs to be scaled again in order to pass from \(\omega\) to \(\Omega\). In order to do so, we need some information about the function we want to take the Fourier Transform of. In particular, we need to know with what sampling interval \(T\) it has been sampled. If \(T\) is known, we can scale our frequency axis by typing:

T=eta_sampled_good(2)-eta_sampled_good(1);
OMEGA_fft=1/T*omega_fft_centred;

VI.2 Adaptation of the result vector

First of all, in order for it to look more like the Continuous Fourier Transform, the output vector X_fft has to be centred. This can be done by typing:

X_fft_centred=fftshift(X_fft);

Finally, according to Section IV, the output vector also needs to be scaled. This can be done by typing:

CFT_approx=T*X_fft_centred;

VI.3 Comparison between the numerical result and the analytic Fourier Transform

Let us compare the two by plotting them on the same graph. This can be done by typing:

plot(OMEGA,Fc,'b');
hold on
stem(OMEGA_fft,CFT_approx,'r');
hold off
xlabel('Omega');
legend('Fc(Omega)','CFT_approx');
title('What fft looks like after modifications');

The following picture shows the results and shows that yes, it is possible to approximate a continuous Fourier transform with the Matlab fft routine. However the procedure is not trivial, and one should think (or read this note!) before using it.


Figure 13. Comparison between the analytic CFT and the approximation obtained using fft, for \(P= N = 16\) (left) and \(P = 4 N\) (right)


Powered by Create your own unique website with customizable templates.