1

在 MATLAB 中,如果我有一些信号,可以x

x = rand(1,1000)

我想通过使用 order 的 Autoregressive (AR) filtery过滤来生成。我怎样才能找到?因为自回归滤波器需要过去的输出值进行计算,但我还没有任何过去的输出。我只有输入样本。xMy(n)x

在移动平均 (MA) 滤波器中,我可以y(n)轻松生成,因为它只需要我可以轻松提供的过去输入,因为我们有x,如下

for n=1:1000
  sum=0;
  for k=1:M+1
    if (n-k+1>0)
      sum = sum + (1/M)*x(n-k+1); % MA depends on current & previous input 
    end
  end
  y(n)=sum;
end

谁能帮我为自回归过滤器生成相同的东西?

4

1 回答 1

1

x(1)在移动平均滤波器中,您展示了您基本上能够通过使用在第一个提供的值之前的过去输入样本为零的假设来计算输出。

同样,对于自回归滤波器,您可以通过假设在第一个计算值之前的过去输出y(1)为零来计算输出:

for n=1:1000

  % Add feedforward section for ARMA filter
  % ... for an AR filter this is just sum=x(n)
  sum = x(n);

  % Feedback section      
  for k=2:M+1   % normalized AR (assuming a(1) equals 1) 
    if (n-k+1>0)
      sum = sum + a(k)*y(n-k+1);
    end
  end
  y(n) = sum;
end

更一般地,您还可以通过使用一些先前已知的初始条件为过滤器播种来计算输出(尽管在您的特定情况下,您表示这些初始条件是未知的)。

于 2015-11-07T15:11:31.023 回答