matlab中的fft不补零也能计算,Matlab里的fft是如何计算的?补零fft是否必要?

Matlab里的fft是如何计算的?补零fft是否必要?Matlab里的fft事如何计算的?与Dft的结果是否相同?补零fft是否必要?

下面通过实验分析,结果如下:

在matlab中不论数据长度是否是2的整次幂,dft和fft的结果都是相同的。

Dft的标准角频率是以2π为周期的,若以π为周期,其效果等同于原始信号补一半零,再做dft变换,不会提高频率分辨率

.........。

Matlab中的fft变换,对于数据长度2的整次幂当然是基2的fft。但是对于长度非2的整次幂数据,其过程是多种混合基的混合运算,其结果当然与dft相同。绝对不是补零到2的整次幂再进行傅里叶变换,那样会漏掉特征(如图中曲线7)。但是对于补零原始数据的整倍数后,再抽样不会繁盛畸变,与直接fft变换结果一样(如图中曲线2、

3、4)

将原始数据补零后再抽取需要点数的做法不可取,不仅不能增加频率分辨率,还会引起较大畸变,就算是补原始数据点的整数倍零,其结果也是只与不补零的效果相同。

下图为matlab仿真图,原始数据400点

曲线1:dft计算时旋转因子周期定为π(标准以2π为周期)

曲线2:fft补一半零达到2倍原数据长度的fft变换,向上偏移10

曲线3:2倍原数据长度的fft变换,向上偏移20。

曲线4:dft补一半零达到2倍原数据长度的dft变换,向上偏移30

曲线5:标准fft曲线;

曲线6:标准dft曲线;

曲线7:原始数据400点补零到512点,傅里叶变换后再抽取400点的曲线。

28389fcd56fde9c6549dc741cfeb485f.png

function xk=dft(xn)%dft

N=length(xn);

n=0:(N-1);

WN=exp(-j*2*pi*n/N);%旋转因子

for i=1:N

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值