1

MATLAB では、何か信号があれば言ってxみましょう

x = rand(1,1000)

order の Autoregressive (AR) フィルターを使用yしてフィルタリングして生成したいと考えています。どうすれば見つけられますか? 自己回帰フィルターは計算のために過去の出力値が必要ですが、過去の出力はまだありません。入力サンプルしかありません。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

Autoregressive フィルターで同じものを生成するのを手伝ってくれる人はいますか?

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 に答える