在MATLAB中使用自回归(AR)滤波器过滤一些随机信号

时间:2015-11-07 14:25:01

标签: matlab filter signal-processing moving-average autoregressive-models

在MATLAB中,如果我有一些信号x,请说

x = rand(1,1000)

我想通过使用订单y的自回归(AR)过滤器过滤x来生成M。我怎样才能找到y(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

有人可以帮我为Autoregressive过滤器生成相同的内容吗?

1 个答案:

答案 0 :(得分: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

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