声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 6055|回复: 21

[FFT] 请教FFT分析时,采样点数N对频谱图的影响

  [复制链接]
发表于 2012-11-15 15:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 HITliu 于 2012-11-15 15:42 编辑

一个最简单的FFT分析程序
clf;
N=250;dt=0.5;
n=0:N-1;t=n*dt;
p=0.2*sin(2*pi*0.24*t)+0.5*cos(2*pi*0.28*t);
P=fft(p);
P=abs(P);
subplot(2,1,1),plot(t,p);
xlabel('时间/s');ylabel('幅值');title('时域图');
k=0:length(P)-1;
subplot(2,1,2),plot(k/(N*dt),P*2/N);
xlabel('频率/Hs');ylabel('幅值');title('频域图');

当N=250时,频谱图中的谱线分离的很明显;但是当N=256时,谱线之间就会稍有相连,仅仅相差了6采样点数,为什么会有这么这种区别呢,是什么造成的呢?还尝试了一下其他的数值,比如249,251等等,都会有相连的现象,之后250时才分离的最好

250.jpg 250_1.jpg
回复
分享到:

使用道具 举报

发表于 2012-11-15 15:29 | 显示全部楼层
2250和256相差6个点???
 楼主| 发表于 2012-11-15 15:30 | 显示全部楼层
发表于 2012-11-15 15:51 | 显示全部楼层
算法造就的,2的幂次方采样点数和非2幂次方采样点数算法不同

你可以看看帮助文件中关于算法的这一段内容
Algorithm
The FFT functions (fft, fft2, fftn, ifft, ifft2, ifftn) are based on a library called FFTW [3],[4]. To compute an N-point DFT when N is composite (that is, when N = N1N2), the FFTW library decomposes the problem using the Cooley-Tukey algorithm [1], which first computes N1 transforms of size N2, and then computes N2 transforms of size N1. The decomposition is applied recursively to both the N1- and N2-point DFTs until the problem can be solved using one of several machine-generated fixed-size "codelets." The codelets in turn use several algorithms in combination, including a variation of Cooley-Tukey [5], a prime factor algorithm [6], and a split-radix algorithm [2]. The particular factorization of N is chosen heuristically.

When N is a prime number, the FFTW library first decomposes an N-point problem into three (N-1)-point problems using Rader's algorithm [7]. It then uses the Cooley-Tukey decomposition described above to compute the (N-1)-point DFTs.

For most N, real-input DFTs require roughly half the computation time of complex-input DFTs. However, when N has large prime factors, there is little or no speed difference.

The execution time for fft depends on the length of the transform. It is fastest for powers of two. It is almost as fast for lengths that have only small prime factors. It is typically several times slower for lengths that are prime or which have large prime factors.
发表于 2012-11-15 16:11 | 显示全部楼层
采样点数要为2的次方的关系处理得到的fft是最好的
 楼主| 发表于 2012-11-15 16:16 | 显示全部楼层
haha8809 发表于 2012-11-15 16:11
采样点数要为2的次方的关系处理得到的fft是最好的

但是从上面程序的分析结果看,N=250的时候,谱线分离的很清晰,同时幅值也是准确;但是当N=256时,谱线反而有相连了,同时幅值也降低了,这又是为什么呢?
发表于 2012-11-15 21:19 | 显示全部楼层
影响FFT变化的不止是采样点数,而且还有采样率。
其实防止频谱泄露的最核心的问题就就是能否做到“整周期采样”。可以自己推导他们之间的关系,就是M =dt*f1*N 是整数。
可以计算:dt = 0.5,f1 = 0.24 , f2 = 0.28. 当N = 256时, M1 = 0.5*0.24*256 =30.72 非整数;M2 =0.5* 0.28*256 = 35.84 非整数;
当N  = 250时,计算 M1 = 30. M2 =35  整数。所以无泄露。
可以验证

点评

赞成: 5.0
赞成: 5
  发表于 2012-11-24 21:22

评分

1

查看全部评分

 楼主| 发表于 2012-11-15 21:25 | 显示全部楼层
migicmika 发表于 2012-11-15 21:19
影响FFT变化的不止是采样点数,而且还有采样率。
其实防止频谱泄露的最核心的问题就就是能否做到“整周期采 ...

原来是因为这样啊,对于频谱泄露还没有认识,我会再学习学习的,谢谢
发表于 2012-11-22 10:13 | 显示全部楼层
学习了,我也遇到过这样的问题
发表于 2012-11-24 21:28 | 显示全部楼层
其实防止频谱泄露的最核心的问题就就是能否做到“整周期采样”。可以自己推导他们之间的关系,就是M =dt*f1*N 是整数。

或者简单的说, 该频率是否在频谱上的点(k/(N*dt))
发表于 2012-11-25 07:45 | 显示全部楼层
看是否接近整数周期?你的250点,开始点与结束点差别较小,比较接近整数周期,而256点差的多一点.看来252点应该比250点更好一点.
发表于 2012-11-29 20:07 | 显示全部楼层
migicmika 发表于 2012-11-15 21:19
影响FFT变化的不止是采样点数,而且还有采样率。
其实防止频谱泄露的最核心的问题就就是能否做到“整周期采 ...

灼见
发表于 2012-11-29 21:40 | 显示全部楼层
这和你选取的FFT点数以及实际真实频率有关,所取的点数对应计算的的离散间隔若不在你真实频率上,就会产生泄露或栅栏效应,在频谱曲线中就会显示不一致

评分

1

查看全部评分

发表于 2013-3-27 11:18 | 显示全部楼层
migicmika 发表于 2012-11-15 21:19
影响FFT变化的不止是采样点数,而且还有采样率。
其实防止频谱泄露的最核心的问题就就是能否做到“整周期采 ...

正纠结这个问题,终于弄清楚了,非常感谢。
发表于 2013-4-3 11:26 | 显示全部楼层
migicmika 发表于 2012-11-15 21:19
影响FFT变化的不止是采样点数,而且还有采样率。
其实防止频谱泄露的最核心的问题就就是能否做到“整周期采 ...

如果是随机信号共振频率不知道但是知道大体的范围怎么验证呢?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 19:00 , Processed in 0.077649 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表