伙计们,
Matlab 2007b (7.5.0) 有一个 avgpower 函数。见这里:
“avgpower 方法使用积分的矩形近似值,使用存储在对象中的 PSD 数据计算信号的平均功率。
“avgpower 方法返回信号的平均功率,即 PSD 曲线下的面积。”
示例调用:
numSamples = 10000 频率 = 20 幅度 = 10 Fs = 1000 t = [0:1/numSamples:1]; sig = 幅度 * sin(2*pi*频率*t); h = 光谱.周期图('矩形'); hopts = psdopts(h, 信号); 设置(跳跃,'Fs',Fs); p = psd(h,信号,跳数); 较低 = 12 上 = 30 beta_power = p.avgpower([下上]);
我希望在 Octave 中复制这种功能。功能“pwelch”似乎是一种可能性。以机智:
... sig = 幅度 * sin(2*pi*频率*t); pwelch('R12+'); [光谱,频率]=pwelch(信号,[],[],[],Fs,plot_type='dB');
现在我认为频谱具有PSD的y值,而频率具有x值。所以,我可以在频率中找到介于“下”和“上”之间的样本,并且......呃,平均光谱中的相应值?我对此很模糊。
此外,“频率”中的值不一定对应于我想要的上限和下限,我不知道该怎么做。如果下部或上部正好位于宽频率箱的中间怎么办?例如,我是否需要半个 bin(即线性插值)?
也有可能从某种 FFT 中获取单个值,而不是使用 pwelch。
建议?