EDUCBA Logo

EDUCBA

MENUMENU
  • Explore
    • EDUCBA Pro
    • PRO Bundles
    • Featured Skills
    • New & Trending
    • Fresh Entries
    • Finance
    • Data Science
    • Programming and Dev
    • Excel
    • Marketing
    • HR
    • PDP
    • VFX and Design
    • Project Management
    • Exam Prep
    • All Courses
  • Blog
  • Enterprise
  • Free Courses
  • Log in
  • Sign Up
Home Data Science Data Science Tutorials Matlab Tutorial Matlab fft()
 

Matlab fft()

Priya Pedamkar
Article byPriya Pedamkar

Updated March 4, 2023

Matlab fft()

 

 

Introduction to Matlab fft()

Matlab method fft() carries out the operation of finding Fast Fourier transform for any sequence or continuous signal. A FFT (Fast Fourier Transform) can be defined as an algorithm that can compute DFT (Discrete Fourier Transform) for a signal or a sequence or compute IDFT (Inverse DFT). Fourier analysis operation on any signal or sequence maps it from the original domain (usually space or time) to that of the frequency domain, whereas IDDFT carries out the reverse operation.

Watch our Demo Courses and Videos

Valuation, Hadoop, Excel, Mobile Apps, Web Development & many more.

Syntax:

Syntax Description
F = fft(f) This form of the command is to compute DFT (Discrete Fourier Transform) of ‘f’ using a FFT (Fast Fourier transform) algorithm and results the frequency domain signal F.
F = fft(f, n) This form of the command is to compute DFT (Discrete Fourier Transform) of ‘f’ using a FFT (Fast Fourier Transform) algorithm and results the frequency domain n-point DFT signal ‘F’. BY default F possess same size as that of f.
F = fft(f, n, dim) This form of the command is to compute DFT (Discrete Fourier Transform) of ‘f’ using a FFT (Fast Fourier Transform) algorithm and results the frequency domain FT signal ‘F’along the dimension ‘dim’.

Examples of Matlab fft()

Given below are the examples mentioned:

Example #1

Deriving FFT for Random Noise Signal.

Code:

Ls = 2500;% Signal length
Fs = 2000;% Sampling frequency
Ts = 1/Fs;% Sampling period
tv = (0:Ls-1)*Ts;        % Time vector
f = 0.6*sin(2*pi*50*tv) + 3*randn(size(tv))+ sin(2*pi*120*tv);%Input signal
plot(1000*tv(1:50),f(1:50))
xlabel('tv (ms)')
ylabel('f(tv)')
title(' Corrupted Signal having Zero-Mean Random Noise')
F = fft(f);% Calling fft() function for signal ‘f’
PS2 = abs(F/Ls);% Double sampling plot
PS1 = PS2(1:Ls/2+1);% Single sampling plot
PS1(2:end-1) = 2*PS1(2:end-1);
f = Fs*(0:(Ls/2))/Ls;
plot(f,PS1)
title('Amplitude Spectrum (Single-Sided) PS1 for f(t)')
xlabel('f (Herz)')
ylabel('|PS1(f)|')

Output:

The output window displays the noise signal formed as function ‘f’ in time domain and single sided amplitude spectrum is computed using fft() resulting in frequency domain signal ‘F’.

Random noise signal

Random noise signal

The nature of the resultant FFT signal varies depending on the type of input signal or data such as:

Nature of Input Nature of Output
f is a Vector F is produced as Fourier transform of vector f.
f is a Matrix F is produced as Fourier transform of each column of matrix ‘f’.
f is a multidimensional array Function fft(f) treats the values along the first non-unit array dimension as vectors and returns the Fourier transform for each vector.

Example #2

Deriving np point FFT for Gaussian Signal.

Code:

Fs = 300;   % Sampling frequency
ts = -0.5:1/Fs:0.5;  % Time vector
Ls = length(ts);   % Signal length
f = 1/(4*sqrt(2*pi*0.02))*(exp(-ts.^2/(2*0.02)));
plot(ts,f)
xlabel('Time (t)')
ylabel('f(t)')
title('Time Domain')
np = 2^nextpow2(Ls);
f = Fs*(0:(np/2))/np;
F = fft(f,np);
PF = abs(F/np);
plot(f,PF(1:np/2+1))
xlabel('(f)')
ylabel('|PF(f)|')
title('Frequency Domain')

Output:

The output window displays the Gaussian signal formed as function ‘f’ in time domain and np-point FFT is computed using fft() resulting in frequency domain signal ‘PF’.

for Gaussian signal

for Gaussian signal

The nature of the resultant n-point FFT signal varies depending on the type of input signal or data such as:

Nature of Input Nature of Output
f is a Vector having length smaller than the value of ‘n’. F is produced as Fourier transform of vector f being padded with trailing zeros to match the length of ‘n’.
f is a Vector having length greater than the value of ‘n’. F is produced as Fourier transform of vector f being truncated to the length of ‘n’.
f is a matrix F is produced as Fourier transform of each column of matrix ‘f’.
f is a multidimensional array Function fft(f) treats the values along the first non-unit array dimension as vectors and returns the Fourier transform for each vector.

Example #3

Code:

Fs = 2000;   % Sampling frequency
Ts = 1/Fs;   % Sampling period
Ls = 3000;   % Length of signal
t = (0:Ls-1)*Ts;        % Time vector
r1 = sin(3*pi*60*t);   % waveformed in First row
r2 = sin(3*pi*140*t);   % waveformedin Second row
r3 = sin(3*pi*350*t);   % waveformedin Third row
% Display of all 3 waves in time domain
f = [r1; r2; r3];
for k = 1:3
subplot(3,1,k)
plot(t(1:200),f(k,1:200))
title(['Row No ',num2str(k),' (Time Domain)'])
end
np = 2^nextpow2(Ls);% Defining n value for DFT operation
d = 2;
F = fft(f,np,d);% Calling fft() for the matrix f  having each wave as one row
PS2 = abs(F/Ls);
PS1 = PS2(:,1:np/2+1);
PS1(:,2:end-1) = 2*PS1(:,2:end-1);
% Computing FFT of all 3 waves and displayed in frequency domain
for k=1:3
subplot(3,1,k)
plot(0:(Fs/np):(Fs/2-Fs/np),PS1(k,1:np/2))
title(['Row No',num2str(k),'(Frequency Domain)'])
end

Output:

The output window displays the three sinusoidal waves r1, r2 an r3 in time domain and their respective single side amplitude spectrum is computed on the waves in the form of matrix f, using fft() resulting in frequency domain signal ‘PS1’.

Matlab fft() 5

Matlab fft() 6

How fft() works?

F = fft(f) calls the operation of Fourier transform whereas f = ifft(F) calls the operation of inverse Fourier transform. For f and F of length n, these transforms operations are defined as below:

Fourier transform F (frequency domain signal) for time or space domain signal f:

Matlab fft() 7

Inverse Fourier transform f (space or time domain signal) for signal F (frequency domain signal):

Matlab fft() 8

Where Wn is the nth root of the unity i.e.

Matlab fft() 9

Additional Note:

  • fft() function execution time depends on the length defined for the transform to be carried out. The Transformation lengths with small prime factors are considerably faster than those with large prime factors.
  • For most of the values of n, real-input DFTs get executed approximately within half the execution time of a complex-input DFTs.
  • In case the value of n has large prime factors, the difference is speed is null or insignificant.
  • The speed of fft() function can potentially be increased by implementing fftw, the utility function. This function, fftw can control the optimization of the algorithm used in the computation of an FFT operation performed with a particular size and dimension.

Recommended Articles

This is a guide to Matlab fft(). Here we discuss the introduction to Matlab fft(), how fft() works along with respective examples. You may also have a look at the following articles to learn more –

  1. Low Pass Filter Matlab
  2. Matlab Sine Wave
  3. Simplify Matlab
  4. Matlab loglog()

Primary Sidebar

Footer

Follow us!
  • EDUCBA FacebookEDUCBA TwitterEDUCBA LinkedINEDUCBA Instagram
  • EDUCBA YoutubeEDUCBA CourseraEDUCBA Udemy
APPS
EDUCBA Android AppEDUCBA iOS App
Blog
  • Blog
  • Free Tutorials
  • About us
  • Contact us
  • Log in
Courses
  • Enterprise Solutions
  • Free Courses
  • Explore Programs
  • All Courses
  • All in One Bundles
  • Sign up
Email
  • [email protected]

ISO 10004:2018 & ISO 9001:2015 Certified

© 2025 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
Loading . . .
Quiz
Question:

Answer:

Quiz Result
Total QuestionsCorrect AnswersWrong AnswersPercentage

Explore 1000+ varieties of Mock tests View more

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA
Free Data Science Course

Hadoop, Data Science, Statistics & others

By continuing above step, you agree to our Terms of Use and Privacy Policy.
*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you

EDUCBA Login

Forgot Password?

🚀 Limited Time Offer! - 🎁 ENROLL NOW