关于幅值谱和功率谱的选择
本帖最后由 旗舰水自然 于 2013-12-4 11:19 编辑现有一组信号,频率是49.9,50Hz,50.1Hz还有其他谐波的叠加,现在我想计算49.9Hz,50Hz,50.1Hz的含量。做FFT幅值谱,存在相位问题,好像幅值不能直接相加。那我能不能计算功率谱,然后直接相加?
可以进行功率谱叠加,也可以幅值谱求模平方后再叠加,总之按能量求和的方式叠加即可 江树空 发表于 2013-12-4 11:55 static/image/common/back.gif
可以进行功率谱叠加,也可以幅值谱求模平方后再叠加,总之按能量求和的方式叠加即可
幅值谱求模平方叠加叫什么?好像跟幅值谱不是一样的。。。谢谢 旗舰水自然 发表于 2013-12-4 13:15 static/image/common/back.gif
幅值谱求模平方叠加叫什么?好像跟幅值谱不是一样的。。。谢谢
幅值求模的平方就是功率谱啊 你的问题主要是频率分辨率的问题,不是频谱还是功率谱的问题。
你的采样频率应该在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谱线值为你所需要的值。
hcharlie 发表于 2013-12-4 14:39 static/image/common/back.gif
你的问题主要是频率分辨率的问题,不是频谱还是功率谱的问题。
你的采样频率应该在2倍50.1以上,假定我们取 ...
目前我已经得到了49.9,50.0,50.1的各频率的值,想求这个频率带的值。 江树空 发表于 2013-12-4 13:24 static/image/common/back.gif
幅值求模的平方就是功率谱啊
好的,谢谢!! 旗舰水自然 发表于 2013-12-4 18:07 static/image/common/back.gif
目前我已经得到了49.9,50.0,50.1的各频率的值,想求这个频率带的值。
你这个就是求带宽内的能量了,建议还是不要直接功率谱谱线相加,因为这样的话若分辨率没控制好,会有能量泄漏。建议计算功率谱密度,然后带宽内功率谱密度随频率求积分这样误差会小一些。 旗舰水自然 发表于 2013-12-4 18:07 static/image/common/back.gif
目前我已经得到了49.9,50.0,50.1的各频率的值,想求这个频率带的值。
一个频带内可以也只能求均方值,开方为均方根值。 江树空 发表于 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: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曲线与频率轴、带宽的上下限围成的面积。这种算法与直接功率谱谱线相加的区别呢,我就不多说了,你可以自己琢磨琢磨。 多是牛人啊,学习了 再复习下还给老师的东西 多学习~~~~~~~~~~~~~~~~~~ 嗯,学习了。。
页:
[1]