基2-FFT算法
利用matlab编写DIT-FFT算法,计算信号的离散频谱,结果保存到y中,利用matlab内置FFT函数计算信号的离散频谱并保存到y0中
输入信号
x(t)=1.5cos(2Π✖f1✖t)+cos(2Π✖300t)+0.5cos(2Π✖f2✖t)
采样频率
fT=1000HZ
采样点数
N0
function y=testfft()
%输入f1、f2、取样点数N0
f1=input('请输入f1 ');
f2=input('请输入f2 ');
N0=input('请输入N0 ');
%补零
x0=[0:0.001:(N0-1)*0.001];
x=1.5*cos(2*pi*f1*x0)+cos(2*pi*300*x0)+0.5*cos(2*pi*f2*x0);
m=nextpow2(length(x));
N=2^m;
if length(x)<N
x=[x,zeros(1,N-length(x))];%有修改
end
%内置函数FFT运算结果保存到y0中
y0=fft(x);
%反序
change=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1;
y=x(change);
%蝶形
for s=1:m
Nr=2^s;u=1;
WN=exp(-i*2*pi/Nr);
for j=1:Nr/2
for k=j:Nr:N
kp=k+Nr/2;
g=y(kp)*u;
y(kp)=y(k)-g;
y(k)=y(k)+g;
end
u=u*WN;
end
end
save data y y0;
end