web-dev-qa-db-ja.com

Matlabのfilterとconvの違いは何ですか?

LTIシステム の出力を計算しようとしています。私はその仕事にふさわしいと思われる2つの異なるMatlab関数に出くわしました: filterconv 。 2つの違いは何ですか?

18
nikos

filterはFIRおよびIIRシステムを処理できますが、convは2つの入力を受け取り、それらの畳み込みを返します。したがって、conv(h,x)filter(h,1,x)は同じ結果になります。フィルタの1は、フィルタの再帰係数が[1]であることを示します。ただし、IIRフィルターがある場合は、convを使用できません。 filterはフィルターの状態を返すこともできるため、フィルターのトランジェントを発生させることなく、後続の呼び出しで使用できます。

詳細については、 conv および filter のドキュメントを参照してください。

13
mtrw

conv(x,b)は完全な畳み込みを実行します。結果の長さはlength(x)+ length(b)-1です。 filter(b,[1],x)は、xと同じ長さの出力を提供します。フィルタの遅延線はフラッシュされません。

xが行ベクトルであると仮定します。 x0 = [x zeros(1,length(b)-1)]を作成します。現在、filter(b,[1],x0)conv(x,b)と同じです。これは、追加の0が遅延線をフラッシュするために使用されるためです。

どちらがより合理的ですか?それはあなたが必要とするものに依存します!

10
dernib