0% found this document useful (0 votes)
57 views3 pages

Fast Fourier Transform

The fast Fourier transform (FFT) algorithm computes the discrete Fourier transform (DFT) and its inverse. FFT(x) returns the DFT of vector x. For matrices, it operates on each column. It can also operate on multidimensional arrays along a specified dimension. FFT is commonly used to analyze frequency components in noisy time-domain signals. An example analyzes a simulated signal containing 50Hz and 120Hz sinusoids corrupted with noise, using FFT to identify the frequencies in the frequency spectrum.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views3 pages

Fast Fourier Transform

The fast Fourier transform (FFT) algorithm computes the discrete Fourier transform (DFT) and its inverse. FFT(x) returns the DFT of vector x. For matrices, it operates on each column. It can also operate on multidimensional arrays along a specified dimension. FFT is commonly used to analyze frequency components in noisy time-domain signals. An example analyzes a simulated signal containing 50Hz and 120Hz sinusoids corrupted with noise, using FFT to identify the frequencies in the frequency spectrum.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

Fast Fourier transform

expand all in page

Syntax
Y Y Y Y = = = = fft(x) fft(X,n) fft(X,[],dim) fft(X,n,dim)

Definitions
The functions Y

= fft(x) and y = ifft(X) implement the transform and inverse transform pair

given for vectors of length N by:

where

is an Nth root of unity.

Description Y = fft(x) returns the discrete Fourier transform (DFT) of vector x, computed with a fast Fourier
transform (FFT) algorithm. If the input X is a matrix, Y = fft(X) returns the Fourier transform of each column of the matrix. If the input X is a multidimensional array, fft operates on the first nonsingleton dimension. Y = fft(X,n) returns the n-point DFT. fft(X) is equivalent to fft(X, n) where n is the size of X in the first nonsingleton dimension. If the length of X is less than n, X is padded with trailing zeros to length n. If the length of X is greater than n, the sequence X is truncated. When X is a matrix, the length of the columns are adjusted in the same manner. Y = fft(X,[],dim) and Y = fft(X,n,dim) applies the FFT operation across the dimension dim.

Examples
A common use of Fourier transforms is to find the frequency components of a signal buried in a noisy time domain signal. Consider data sampled at 1000 Hz. Form a signal containing a 50 Hz sinusoid of amplitude 0.7 and 120 Hz sinusoid of amplitude 1 and corrupt it with some zero-mean random noise:

Fs = 1000; T = 1/Fs; L = 1000; t = (0:L-1)*T;

% Sampling frequency % Sample time % Length of signal % Time vector

% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); y = x + 2*randn(size(t)); plot(Fs*t(1:50),y(1:50)) title('Signal Corrupted with Zero-Mean Random Noise') % Sinusoids plus noise

xlabel('time (milliseconds)')

It is difficult to identify the frequency components by looking at the original signal. Converting to the frequency domain, the discrete Fourier transform of the noisy signal y is found by taking the fast Fourier transform (FFT):

NFFT = 2^nextpow2(L); % Next power of 2 from length of y Y = fft(y,NFFT)/L; f = Fs/2*linspace(0,1,NFFT/2+1);

% Plot sin gle-sided amplitude spectrum. plot(f,2*abs(Y(1:NFFT/2+1))) title('Single-Sided Amplitude Spectrum of y(t)') xlabel('Frequency (Hz)') ylabel('|Y(f)|')

The main reason the amplitudes are not exactly at 0.7 and 1 is because of the noise. Several executions of this code (including recomputation of y) will produce different approximations to 0.7 and 1. The other reason is that you have a finite length signal. Increasing Lfrom 1000 to 10000 in the example above will produce much better approximations on average.

Data Type Support fft supports inputs of data types double and single. If you call fft with the syntax y = fft(X, ...), the output y has the same data type as the input X.

You might also like