基2频率抽样FF的matlab实现

处女作

为什么写

从一个脚本坑坑洼洼地补,最终成功运行,有些经验,有些被忽视的小问题其实很致命,我找不到人说。。。有意向成为一名程序员,目前大三,正在学习python\matlab\c,本科专业为电子信息科学与技术,专业课在搞通信,所以matlab可能用的频次更高。以后也可能分享FPGA开发过程中的经验,拭目以待吧!

第一份代码分享

在学习快速傅里叶变换中,FFT算法听的头昏脑胀,不知所云,一时难以接受。通过研究程序搞明白了,程序总结了其迭代规律,得其精髓;
下面给出频率抽样FFT matlab代码。ps:fft在matlab属于内部函数,help也不告诉你

function y=DIF_FFT(x)
%输入自然序,输出倒位序
m=ceil(log2(length(x)));
N=2^m;
if length(x)<N
    x=[x,zeros(1,N-length(x))];
end
for mm=1:m  %级数控制
    Nmr=2^(m-mm); %与时域抽取不同,指数部分为:总级数-当前级
    u=1;
    N=exp(-i*2*pi/(2*Nmr));
    for j=1:Nmr %控制不同的叠加系数
     for k=j :2*Nmr:N %控制相同的系数有几次,每隔2*Nmr出现一个相同系数
            kp=k+Nmr;
            t=(x(k)-x(kp))*u;%一定要保留一个中间变量,否则修改xk与xkp
            %蝶形的递推由上级的两个值确定
            x(k)=x(k)+x(kp);
            x(kp)=t;
             end;
        u=u*WN;
    end
    end
nxd=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1;  
y=x(nxd);%将输出次序修正为自然序

# 简单地结束语
写文档是门手艺,我在排版上有点差,第一次也就不折腾了,码农嘛,算法和思想才关键。
留个QQ吧,寻找码农共同进修啊
My:2991447145
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值