以前从没手动实现过FFT算法,实现了一下.
参考<computational frameworks for the fast fourier transform>



% 2012.3.10
function test
clear;
clc;
close all;
nFFT=2^10;
N=nFFT;
t=linspace(0,1,N)';
fs=N;
x=sin(2*pi*300*t);
freq=fs*((1:nFFT)-1)/nFFT; % bug fixed 1:nFFT
figure;
disp('time[Matlab fft]:');
tic
y0=fft(x,nFFT);
toc
plot(freq,abs(y0));
title('fft');
disp('time[recursive]:');
tic
y=my_fft(x,nFFT);
toc
figure;
plot(freq,abs(y));
title('my-fft');
figure(3);
plot(freq, abs(y-y0));
title('my-fft-error');
disp('time[inplace]:');
tic
y_inplace=my_ffy_inplace(x,nFFT);
toc
figure(4);
plo

本文介绍了如何手动实现FFT算法,并通过MATLAB进行详细实现与测试,参考了《computational frameworks for the fast fourier transform》。
最低0.47元/天 解锁文章
966

被折叠的 条评论
为什么被折叠?



