看看这两个功率谱的区别
下面是我做的两个功率谱,第一个是按MATLAB帮助上做的,第二个是对上面的谱做了对数处理所得到的两个图很明显不同,不知道为什么 解释一下 用啥方法做的,详细点 据我自己查阅的程序,功率谱纵坐标的参数值有使用fft后绝对值的平方的(matlab中查FFT程序),
有的使用fft结果平方后除以采样点数的(MATLAB中查sunspot的fft后的平均周期程序中),
还有一些人是将第二种结果再求一次对数作为纵坐标的值,……如此种种;
得出来的结果也是不太一样,究竟哪一种是正确的呢?这样计算之后,
纵轴对应的数值都是什么单位呢? 上边第一个图就是我按最后一种画出来的,
第二个图是我按第二种画出来的
我觉得都没有错,可结果却很明显的不同(当然在最高尖峰处是相同的),
究竟哪一个是正确的呢 一个是幅值平方
一个是dB
两种结果都是正确的
只是图形显示的形式不同 那第二个图为什么会有那么多峰值,而第一个却没有,这怎么解释
另外,在绘制功率谱时,是否应该在FFT平方后除以 采样点数
X1 = fft(xc, 2048); (1)
X2 = fft(xcc,2048); (2)
Pxx = X1.* conj(X1) / 2048; (3)
就像上面 3 式一样,除以2048还是直接Pxx = X1.* conj(X1) (4)
这有什么区别
第三, 确定一下分贝(dB) 就是 plot(f(1:1024),log(Pxx(1:1024))) (5)
即对(3)求对数吗?
即对 把你的数据和程序发上来看下 我的程序在这个地方谢谢
http://forum.vibunion.com/forum/thread-51871-3-1.html Fs = 1000;
t = 0:1/Fs:.3;
x=cos(2*pi*t*200)+randn(size(t));
Hs=spectrum.periodogram;
psd(Hs,x,'Fs',Fs)
matlab帮助实例你可以看一下
一般取dB都是10*log(),有的用20*log()
你把你的第一图放大后会发现还有很多小的峰值吧?
转换到对数坐标下体现就明显了而已
因为对数坐标差x实际上是差10^x
所以峰值会在第二幅图上体现出来
你求取功率谱可以直接用matlab函数
没必要自己编写程序 matlab有会功率谱的函数 ?我不知道呵呵
就是psd吗? 我在绘制频谱图时每隔四个点取样一次 这样的原因我知道一点,但是说不清,
你能用简单易懂的语句说一下吗, 怕有人问自己回答不上来呵呵
另外,我的QQ76740434,能不能在QQ上问你一下啊,这样太慢了 :handshake matlab里面有个太阳黑子的例子,就在fft的帮助里面,建议你看一下! 我也觉得没有本质区别,只是显示的问题。对数可以缩小数据的范围,因此可以看到变化的情形。如果改变第一幅图的纵坐标范围,应该可以看到相同的变化趋势
页:
[1]