我正在尝试在 Python 中实现 Yule-Walker PSD 估计,但我的结果没有达到预期。在 MATLAB 中,我通常会按如下方式实现我的功能:
pxx = pyulear(x,order,nfft)
在 python 中使用Pyuler 模块的过程是相同的,如下所示
data = (data - data.mean()) / data.std() # Normalize to a zero mean signal
order =16
p = pyule(data, order, NFFT=256)
p.run()
Pxx= p.get_converted_psd(sides='onesided')
Pxx =np.abs(Pxx)**2 # I want to plot the square of the PSS
Fxx=p.frequencies(sides='onesided')
plot (Fxx, Pxx)
show()
我尝试了以下类似的方法,但我也得到了错误的输出
ar, P, k = aryule(data, order, norm='biased')
psd = arma2psd(ar)
# Get just one side of the psd
Pxx = psd[len(psd):len(psd) / 2:-1]
Pxx =np.abs(Pxx)**2
plot(Fxx, Pxx)
与预期值(来自受信任的第三方软件)相比,我的脚本输出平均比预期大 7587764 倍。当我绘制我的预期值与实际值时,我得到以下图片 我的问题是:
- 我做错了什么?
- 文档说该序列应该是零均值和方差的白噪声过程。可以通过这种方法实现吗
data = (data - data.mean()) / data.std()
- 有谁知道任何像 MATLAB 一样实现 Yule-Walker PSD 的 Python 模块?