旗舰水自然 发表于 2013-12-4 11:16

关于幅值谱和功率谱的选择

本帖最后由 旗舰水自然 于 2013-12-4 11:19 编辑

现有一组信号,频率是49.9,50Hz,50.1Hz还有其他谐波的叠加,现在我想计算49.9Hz,50Hz,50.1Hz的含量。做FFT幅值谱,存在相位问题,好像幅值不能直接相加。那我能不能计算功率谱,然后直接相加?

江树空 发表于 2013-12-4 11:55

可以进行功率谱叠加,也可以幅值谱求模平方后再叠加,总之按能量求和的方式叠加即可

旗舰水自然 发表于 2013-12-4 13:15

江树空 发表于 2013-12-4 11:55 static/image/common/back.gif
可以进行功率谱叠加,也可以幅值谱求模平方后再叠加,总之按能量求和的方式叠加即可

幅值谱求模平方叠加叫什么?好像跟幅值谱不是一样的。。。谢谢

江树空 发表于 2013-12-4 13:24

旗舰水自然 发表于 2013-12-4 13:15 static/image/common/back.gif
幅值谱求模平方叠加叫什么?好像跟幅值谱不是一样的。。。谢谢

幅值求模的平方就是功率谱啊

hcharlie 发表于 2013-12-4 14:39

你的问题主要是频率分辨率的问题,不是频谱还是功率谱的问题。
你的采样频率应该在2倍50.1以上,假定我们取128Hz;
要能分辨49.9,50.0,50.1,分辨率取0.01Hz,采样时间100秒,采样点数12800点。
做FFT求频谱,这里情况实际是做DFT,得到6400谱线值,第4990,5000,5010谱线值即是你需要的各分量值了。
分辨率也可以定为其它值,比如0.0125,采样时间80秒,采样点数10240,得到5120谱线,第3992,4000,4008谱线值为你所需要的值。

旗舰水自然 发表于 2013-12-4 18:07

hcharlie 发表于 2013-12-4 14:39 static/image/common/back.gif
你的问题主要是频率分辨率的问题,不是频谱还是功率谱的问题。
你的采样频率应该在2倍50.1以上,假定我们取 ...

目前我已经得到了49.9,50.0,50.1的各频率的值,想求这个频率带的值。

旗舰水自然 发表于 2013-12-4 18:07

江树空 发表于 2013-12-4 13:24 static/image/common/back.gif
幅值求模的平方就是功率谱啊

好的,谢谢!!

江树空 发表于 2013-12-4 18:23

旗舰水自然 发表于 2013-12-4 18:07 static/image/common/back.gif
目前我已经得到了49.9,50.0,50.1的各频率的值,想求这个频率带的值。

你这个就是求带宽内的能量了,建议还是不要直接功率谱谱线相加,因为这样的话若分辨率没控制好,会有能量泄漏。建议计算功率谱密度,然后带宽内功率谱密度随频率求积分这样误差会小一些。

hcharlie 发表于 2013-12-4 19:19

旗舰水自然 发表于 2013-12-4 18:07 static/image/common/back.gif
目前我已经得到了49.9,50.0,50.1的各频率的值,想求这个频率带的值。

一个频带内可以也只能求均方值,开方为均方根值。

旗舰水自然 发表于 2013-12-4 22:20

江树空 发表于 2013-12-4 18:23 static/image/common/back.gif
你这个就是求带宽内的能量了,建议还是不要直接功率谱谱线相加,因为这样的话若分辨率没控制好,会有能量 ...

N = length(x);
xdft = fft(x);
xdft = xdft(1:N/2+1);
psdx = (1/(Fs*N)).*abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:Fs/length(x):Fs/2;
plot(freq,psdx); grid on;
title('Periodogram Using FFT');
xlabel('Frequency (Hz)'); ylabel('Power/Frequency');
然后选择一个频率段,直接用trapz求积分(不用插值)。您是这个意思么?

这样感觉还是跟分辨率有关。。。因为matlab积分也是直接用散点做的啊。

江树空 发表于 2013-12-5 09:23

本帖最后由 江树空 于 2013-12-5 09:25 编辑

旗舰水自然 发表于 2013-12-4 22:20 static/image/common/back.gif
N = length(x);
xdft = fft(x);
xdft = xdft(1:N/2+1);

计算出PSD后,不是用积分函数,而是直接计算psd曲线与频率轴、带宽的上下限围成的面积。这种算法与直接功率谱谱线相加的区别呢,我就不多说了,你可以自己琢磨琢磨。

青云 发表于 2013-12-6 10:18

多是牛人啊,学习了

寒冰冰 发表于 2013-12-6 13:41

再复习下还给老师的东西

chris7 发表于 2013-12-6 20:54

多学习~~~~~~~~~~~~~~~~~~

尤今 发表于 2013-12-10 18:46

嗯,学习了。。
页: [1]
查看完整版本: 关于幅值谱和功率谱的选择