回复: 能不能解释一下为什么要转化为单边谱,而且最后除0.5是什么意思?
双边谱中包含负频率,在物理系统中是没有的;0.5为频率分辨率。 请问,这几个参数的值该如何选取?window,noverlap,nfft
看帮助中说noverlap默认是window的50%. 随机信号的内容吧?
[ 本帖最后由 zhlong 于 2007-6-16 15:39 编辑 ]
以上针对楼上finland写的代码
问题1:=pwelch(xn,window,noverlap,nfft,Fs,range);
[plot_Pxx=10*log10(Pxx);
我一直想知道功率谱计算完毕.为什么要取对数?
问题2:
=psd(xn,nfft,Fs,window,noverlap,p);
plot_Pxxc=10*log10(Pxxc(index+1));
问什么要将index索引+1呢?
这样+1后,谱线不就变成511条而不是512条了吗?
而用=pwelch(xn,window,noverlap,nfft,Fs,range); 方法没有对数组索引进行+1移位呢. 问题1:Pxx是功率谱,它的表示方法可以用线性,也可以用对数。因为在功率谱中变化的范围可能跨越几个数量级,用线性标度表示时,看不出这个特性,而用对数标度表示便能更清楚地表示出来。
问题2,index的定义为:
index=0:round(nfft/2-1);
共有512个数,在数组Pxxc中下标不能从0开始,必须从1开始,这便是为什么要设成Pxxc(index+1),一样有512个数。
谢谢
看了楼上对很多论坛问题的精彩回答,很值得我们新手学习。谢谢songzy41 你们这种说法用matlab计算过结果没有啊??我按照你们方法进行正规化处理就不是这个结果。例如11楼的,计算fft幅值谱后幅值就不是0.5。。。能否给个解释?? 大家继续讨论,把问题弄清楚! 本帖最后由 wdhd 于 2016-6-3 10:52 编辑上面几位讲的非常精彩,但还有一个问题,就是:
原始数据是d(),那么a=fft(d)得到的是它的傅立叶变换,在求功率谱的时候,应该是先求a的模,然后除以fft的点数,再下面问题来了,前面几位产生了不同的说法:
1、yangzj说得是先乘以2,得到单边的,然后再平方,再除以频率分辨率,得到的就是单边功率谱。
他的例子是:xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)像这个信号的话,考虑单边谱的话,40Hz的幅值为1,100Hz的幅值为3,对应的功率谱值分别为1和9.在用FFT做谱估计值时,应把FFT的结果取模后除以FFT的点数再乘以2,得到单边谱幅值,再平方后就得到单边功率谱值。
2、yangzp说得是先平方,然后乘以2,再除以频率分辨率,得到的就是单边功率谱。
他的例子是:幅值为1,频率为16Hz的正弦信号,使用1024Hz采样,2048点进行功率谱密度计算,频率分辨率为1024/2048=0.5Hz,求出的功率谱单边谱在第32根谱线处的值为1,解释为:信号FFT变换后得到的双边谱,幅值分别为0.5,平方后为0.25,转化为单边乘2为0.5,在除以频率分辨率为1。将1乘以0.5,正好为该信号有效值0.707的平方。
大家看,他们两个说的明显的差一个二倍,到底那个是对的呢?
期待中。。。。。
怎么没人回复呢?顶一下,版主呢?版主给看看!
[ 本帖最后由 bulingshan 于 2007-1-8 13:13 编辑 ] 一直在关注这个帖子。持续没人顶!版主在不在啊?不知道也该说声,怎么感觉论坛最近人气不足啊! 好久没有关注这个帖子了,想不到关注的人挺多的!多谢大家捧场,呵呵