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
  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值