matlab实现DIT-FFT

基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

你可能感兴趣的:(matlab,matlab,数字信号处理,fft)