Matlab快速傅里叶变换程序(FFT)编写

Matlab快速傅里叶变换程序(FFT)编写

(不利用Matlab内置fft)

最近在学习数字信号处理,正好到快速傅里叶变换,写一个基于基2FFT算法的傅里叶变换。利用原理:DIT-FFT(时域抽取法基2FFT)。
DIT-FFT:
设序列x(n)的长度为N,且满足N=2^M,M为自然数。
①按n的奇偶把x(n)分解为两个N/2的子序列。
②对x(n)做DFT,经过化简可以得到
X(k)=X1(k)+W^k;
X(k+N/2)=X1(k)+W^kX2(k);
k=0,1,…,N/2-1;
由此得到一个蝶形运算符号:
在这里插入图片描述
③这是DIT-FFT基本原理,按照N值的大小,还可进一步进行分解运算,可分解M次,将N点DFT分解为N个1点DFT和M级蝶形运算,而1点DFT就是时域序列本身。
DFT与FFT运算量比较:
N点DFT:复数乘法CM=NN
复数加法CA=N
(N-1)
N点FFT: 复数乘法CM=MN/2
复数加法CA=M
N
N=2^M
代码:

function H=ditfft2(xn,M)
%DIT-FFT快速傅里叶变换程序
%程序名称
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值