disp('请输入一个8点序列');
for ii=1:8 %用户可以自由输入序列
x(ii) = input(['x(',num2str(ii),')=']);
end
%整体运用原位计算
m=nextpow2(x);
N=2^m; % 求x的长度对应的2的最低幂次m
if length(x)<N
x=[x,zeros(1,N-length(x))]; % 若x的长度不是2的幂,补零到2的整数幂
end
nxd=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1; % 求1:2^m数列序号的倒序
y=x(nxd); % 将x倒序排列作为y的初始值
for mm=1:m % 将DFT作m次基2分解,从左到右,对每次分解作DFT运算,共做m级蝶形运算,每一级都有2^(mm-1)个蝶形结
Nz=2^mm;
u=1; % 旋转因子u初始化为WN^0=1
WN=exp(-i*2*pi/Nz); % 本次分解的基本DFT因子WN=exp(-i*2*pi/Nz)
for a=1:Nz/2 % 本次跨越间隔内的各次蝶形运算,在进行第mm级运算时需要2^(mm-1)个 蝶形
for k=a:Nz:N % 本次蝶形运算的跨越间隔为Nz=2^mm
kp=k+Nz/2; % 蝶形运算的两个因子对应单元下标的关系
t=y(kp)*u; % 蝶形运算的乘积项
y(kp)=y(k)-t; % 蝶形运算
y(k)=y(k)+t; % 蝶形运算
end
u=u*WN; % 修改旋转因子,多乘一个基本DFT因子WN
end
end
y
y1=fft(x) %自己编的FFT跟直接调用的函数运算以后的结果进行对比
FFT.rar_FFT matlab_FFT函数 matlab_fft matlab_fft函数_matlab fft
版权申诉
5星 · 超过95%的资源 188 浏览量
2022-07-15
03:29:40
上传
评论 3
收藏 793B RAR 举报
alvarocfc
- 粉丝: 105
- 资源: 1万+
最新资源
- 基于c++的个人收支管理系统设计
- docker一键安装包
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 基于matlab实现自适应波束形成RLS及LMS算法仿真源程序1.rar
- 基于matlab实现自己编写的基于卡尔曼滤波的利用加速度传感器的计步器,测试数据是传感器放在腰部和手臂 .rar
- 基于matlab实现阵列信号处理,波束形成.rar
- 111111111111111111
- 基于matlab实现计步器编程;对当前的计步器装置的数值算法模拟 .rar
- Mdb学习查看PW;access;mdb;pw;password;patch
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论2