利用arma模型实现功率谱估计的 代码
时间: 2023-11-27 17:01:23 浏览: 88
基于ARMA模型的功率谱估计.pptx
5星 · 资源好评率100%
下面是使用ARMA模型实现功率谱估计的示例代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 生成ARMA模型的系数
ar_coeffs = np.array([1, -1.5, 0.7])
ma_coeffs = np.array([1, 0.5])
# 生成ARMA过程的模拟信号
np.random.seed(0)
n_samples = 1000
ar_process = signal.lfilter(ar_coeffs, 1, np.random.normal(size=n_samples))
arma_process = signal.lfilter(ma_coeffs, 1, ar_process)
# 使用Welch法估计ARMA模拟信号的功率谱密度
frequencies, power_spectrum = signal.welch(arma_process, fs=1.0, nperseg=256)
# 绘制原始信号和估计得到的功率谱密度
plt.figure(figsize=(8, 4))
plt.subplot(1, 2, 1)
plt.plot(arma_process)
plt.xlabel('时间')
plt.ylabel('信号值')
plt.title('ARMA模拟信号')
plt.subplot(1, 2, 2)
plt.plot(frequencies, power_spectrum)
plt.xlabel('频率')
plt.ylabel('功率谱密度')
plt.title('ARMA模拟信号功率谱密度')
plt.tight_layout()
plt.show()
上述代码中,首先生成了一个ARMA模型的系数ar_coeffs和ma_coeffs。然后使用这些系数来生成ARMA过程的模拟信号arma_process。接下来使用scipy库中的signal.welch函数对arma_process进行功率谱密度估计,得到频率frequencies和对应的功率谱密度power_spectrum。最后使用matplotlib库绘制了原始信号和估计得到的功率谱密度图。
阅读全文