自回归移动平均代码实现

信息处理 语音处理 演讲 移动平均线 自回归模型
2022-02-16 17:30:22

我是 DSP 的新手,我正在尝试获取一个 wav(人类语音)文件并应用 ARMA 过滤器并在 python 中绘制它的 PSD 图。

我看到有很多 AR 实现,但几乎没有 ARMA。我发现只有 statsmodel 实现了 ARMA,但它要求数据是静止的(但滞后 30 的声音几乎是静止的)

有没有人有我可以用来绘制的工作代码?如果没有,我将很高兴获得有关如何实施它的一些参考。

提前致谢!

1个回答

我不知道在 Python 中,但是这个简单的 matlab/octave 循环代码:

function y=arma(x,A,B)
na=length(A);
n=length(x);
y(1:na,1)=zeros(na,1);
for i=na:n
    y(i,1)=1/A(1)*A(2:na)*y(i-1:-1:i-na+1)+1/A(1)*B*x(i:-1:i-na+1);
end

使用多项式实现 ARMA 过滤器A,B,例如按照这个 5 阶过滤器:

A=[1 0 0 0 0 0];
B=[0 0.2 0.2 0.2 0.2 0.2];
n=1000; dt=0.001; 
t=dt*(0:n-1)';
x=randn(n,1);
y=arma(x,A,B);
plot(t,[x y]);