MATLAB : Fast Fourier Transform (FFT) & Inverse Fast Fourier Transform (IFFT) , Without Using built in MATLAB function
MATLAB based Fast Fourier Transform (FFT) & Inverse Fast Fourier Transform (IFFT).
The following MATLAB implemented method of finding the FFT is based on the formula given below:
The following MATLAB implemented method of finding the FFT is based on the formula given below:
X(k)= Σ x(n)e^(-j*2*pi*k*n/N)
Σ is from k=0 to N-1
Σ is from k=0 to N-1
Similarly we have used the formula for IFFT as:
x(n)= (1/N)[Σ X(K)e^(j*2*pi*k*n/N)]
Σ is from n=0 to N-1
Σ is from n=0 to N-1
If you want to make your work for calculating the FFT & IFFT function even more simpler, then you can feed in your sequence directly to fft() function of MATLAB.
MATLAB Code for calculating FFT (Fast Fourier Transform) & IFFT (Inverse Fast Fourier Transform):
clc;
close all;
clear all;
x = input('Enter the sequence for FFT = ');
N = length(x); %finding the length of entered sequence for N point FFT
for k = 1:N %for every value of k
y(k) = 0;
for n = 1:N %for every value of n
y(k) = y(k)+x(n)*exp(-1i*2*pi*(k-1)*(n-1)/N);
%as per FFT formula 0 to n-1
end
end
t = 0:N-1;
subplot(3,1,1);
stem(t,x); % for discrete plotting
%plotting input sequence
ylabel('Amplitude');
xlabel('n');
title('Input');
magnitude = abs(y); % absolute values of individual FFT complex
disp('FFT : ');
disp(magnitude);
t = 0:N-1;
subplot(3,1,2);
stem(t,magnitude);
%plotting FFT sequence
ylabel('Amplitude');
xlabel('K');
title('FFT');
R = length(y); %length of the fft array
for n = 1:R
x1(n) = 0;
for k = 1:R %loop as per the IFFT formula
x1(n) = x1(n)+(1/R)*y(k)*exp(1i*2*pi*(k-1)*(n-1)/R);
end
end
t = 0:R-1;
subplot(3,1,3);
stem(t,x1);
%ploting IFFT sequence
disp('IFFT :');
disp(x1);
ylabel('Amplitude');
xlabel('n');
title('IFFT');
Sample Input & Output:
Enter the sequence for FFT = [1 2 3 4 5]
FFT Sequence =
15.0000 4.2533 2.6287 2.6287 4.2533
IFFT Sequence =
1.0000 - 0.0000i 2.0000 - 0.0000i 3.0000 4.0000 5.0000 + 0.0000i
Output Graph:
Read More At Digital iVision Labs:
#FSK Simulation Code Using MATLAB
#Phase Shift Keying (PSK) Modulation MATLAB Simulation, With MATLAB Code
#Amplitude Shift Keying (ASK) Modulation MATLAB Simulation, With MATLAB Code
#Matlab Christmas Tree Plot- Christmas celebration through matlab way - Merry Christmas!
MATLAB Code for calculating FFT (Fast Fourier Transform) & IFFT (Inverse Fast Fourier Transform):
clc;
close all;
clear all;
x = input('Enter the sequence for FFT = ');
N = length(x); %finding the length of entered sequence for N point FFT
for k = 1:N %for every value of k
y(k) = 0;
for n = 1:N %for every value of n
y(k) = y(k)+x(n)*exp(-1i*2*pi*(k-1)*(n-1)/N);
%as per FFT formula 0 to n-1
end
end
t = 0:N-1;
subplot(3,1,1);
stem(t,x); % for discrete plotting
%plotting input sequence
ylabel('Amplitude');
xlabel('n');
title('Input');
magnitude = abs(y); % absolute values of individual FFT complex
disp('FFT : ');
disp(magnitude);
t = 0:N-1;
subplot(3,1,2);
stem(t,magnitude);
%plotting FFT sequence
ylabel('Amplitude');
xlabel('K');
title('FFT');
R = length(y); %length of the fft array
for n = 1:R
x1(n) = 0;
for k = 1:R %loop as per the IFFT formula
x1(n) = x1(n)+(1/R)*y(k)*exp(1i*2*pi*(k-1)*(n-1)/R);
end
end
t = 0:R-1;
subplot(3,1,3);
stem(t,x1);
%ploting IFFT sequence
disp('IFFT :');
disp(x1);
ylabel('Amplitude');
xlabel('n');
title('IFFT');
Sample Input & Output:
Enter the sequence for FFT = [1 2 3 4 5]
FFT Sequence =
15.0000 4.2533 2.6287 2.6287 4.2533
IFFT Sequence =
1.0000 - 0.0000i 2.0000 - 0.0000i 3.0000 4.0000 5.0000 + 0.0000i
Output Graph:
MATLAB based Fast Fourier Transform (FFT) & Inverse Fast Fourier Transform (IFFT) Calculation, Without Using fft & ifft inbuilt MATLAB function |
Read More At Digital iVision Labs:
#FSK Simulation Code Using MATLAB
#Phase Shift Keying (PSK) Modulation MATLAB Simulation, With MATLAB Code
#Amplitude Shift Keying (ASK) Modulation MATLAB Simulation, With MATLAB Code
#Matlab Christmas Tree Plot- Christmas celebration through matlab way - Merry Christmas!
1 comments: