HITliu 发表于 2012-11-15 15:22

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

本帖最后由 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时才分离的最好


glise 发表于 2012-11-15 15:29

2250和256相差6个点???

HITliu 发表于 2012-11-15 15:30

glise 发表于 2012-11-15 15:29 static/image/common/back.gif
2250和256相差6个点???

抱歉,写错了,是250个点和256个点

glise 发表于 2012-11-15 15:51

算法造就的,2的幂次方采样点数和非2幂次方采样点数算法不同

你可以看看帮助文件中关于算法的这一段内容
Algorithm
The FFT functions (fft, fft2, fftn, ifft, ifft2, ifftn) are based on a library called FFTW ,. 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 , 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 , a prime factor algorithm , and a split-radix algorithm . 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 . 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.

haha8809 发表于 2012-11-15 16:11

采样点数要为2的次方的关系处理得到的fft是最好的

HITliu 发表于 2012-11-15 16:16

haha8809 发表于 2012-11-15 16:11 static/image/common/back.gif
采样点数要为2的次方的关系处理得到的fft是最好的

但是从上面程序的分析结果看,N=250的时候,谱线分离的很清晰,同时幅值也是准确;但是当N=256时,谱线反而有相连了,同时幅值也降低了,这又是为什么呢?

migicmika 发表于 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整数。所以无泄露。
可以验证

HITliu 发表于 2012-11-15 21:25

migicmika 发表于 2012-11-15 21:19 static/image/common/back.gif
影响FFT变化的不止是采样点数,而且还有采样率。
其实防止频谱泄露的最核心的问题就就是能否做到“整周期采 ...

原来是因为这样啊,对于频谱泄露还没有认识,我会再学习学习的,谢谢

海外 发表于 2012-11-22 10:13

学习了,我也遇到过这样的问题

ChaChing 发表于 2012-11-24 21:28

其实防止频谱泄露的最核心的问题就就是能否做到“整周期采样”。可以自己推导他们之间的关系,就是M =dt*f1*N 是整数。
或者简单的说, 该频率是否在频谱上的点(k/(N*dt))

hcharlie 发表于 2012-11-25 07:45

看是否接近整数周期?你的250点,开始点与结束点差别较小,比较接近整数周期,而256点差的多一点.看来252点应该比250点更好一点.

〖灯泡恋〗 发表于 2012-11-29 20:07

migicmika 发表于 2012-11-15 21:19 static/image/common/back.gif
影响FFT变化的不止是采样点数,而且还有采样率。
其实防止频谱泄露的最核心的问题就就是能否做到“整周期采 ...

{:{39}:}灼见

zengwj0423 发表于 2012-11-29 21:40

这和你选取的FFT点数以及实际真实频率有关,所取的点数对应计算的的离散间隔若不在你真实频率上,就会产生泄露或栅栏效应,在频谱曲线中就会显示不一致

风起潮涌 发表于 2013-3-27 11:18

migicmika 发表于 2012-11-15 21:19 static/image/common/back.gif
影响FFT变化的不止是采样点数,而且还有采样率。
其实防止频谱泄露的最核心的问题就就是能否做到“整周期采 ...

正纠结这个问题,终于弄清楚了,非常感谢。

lipard 发表于 2013-4-3 11:26

migicmika 发表于 2012-11-15 21:19 static/image/common/back.gif
影响FFT变化的不止是采样点数,而且还有采样率。
其实防止频谱泄露的最核心的问题就就是能否做到“整周期采 ...

如果是随机信号共振频率不知道但是知道大体的范围怎么验证呢?
页: [1] 2
查看完整版本: 请教FFT分析时,采样点数N对频谱图的影响