FFT WITHOUT Built-in functions

How do I write the matlab code for fourier transform without the built-in function (fft). NOT DFT! Decimation in time radix-2fft please!

 Accepted Answer

Using the definition given at the end of FFT document
%x is your input
x=[1 2 3 4];
fft(x) %using for comparison
ans =
10.0000 + 0.0000i -2.0000 + 2.0000i -2.0000 + 0.0000i -2.0000 - 2.0000i
Method 1
%loop approach
for j=1:numel(x)
y(j)=sum(arrayfun(@(z) x(z)*exp(-i*2*pi*(j-1)*(z-1)/numel(x)),1:numel(x)));
end
y
y =
10.0000 + 0.0000i -2.0000 + 2.0000i -2.0000 - 0.0000i -2.0000 - 2.0000i
Method 2
%vector approach
l=length(x);
z = x*exp(-2j*pi/l*(0:l-1).'*(0:l-1))
z =
10.0000 + 0.0000i -2.0000 + 2.0000i -2.0000 - 0.0000i -2.0000 - 2.0000i

2 Comments

Camille Pham
Camille Pham on 7 May 2022
Moved: DGM on 8 Jan 2024
Without the fft built in function.
@Camille Pham, y and z are obtained without using fft(), I just used fft() to show the comparison.

Sign in to comment.

More Answers (0)

Categories

Find more on Fourier Analysis and Filtering in Help Center and File Exchange

Tags

Asked:

on 7 May 2022

Moved:

DGM
on 8 Jan 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!