一个 AR 过程的 Yule-Walker PSD 估计

信息处理 Python 功率谱密度
2022-02-24 05:44:37

我正在尝试在 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 倍。当我绘制我的预期值与实际值时,我得到以下图片 在此处输入图像描述 我的问题是:

  1. 我做错了什么?
  2. 文档说该序列应该是零均值和方差的白噪声过程。可以通过这种方法实现吗
      data = (data - data.mean()) / data.std()
  1. 有谁知道任何像 MATLAB 一样实现 Yule-Walker PSD 的 Python 模块?
0个回答
没有发现任何回复~