関数 filter
filter は、直接 II 型転置構成 として実装されます。ここで、n–1 はフィルター次数です。これは最小数の遅延要素をもつ正準形です。

サンプル m において、filter は以下の差分方程式を計算します。
最も基本的な型において、関数 filter は、遅延出力 zi(1), i = 1, ..., n-1 を 0 に初期化します。これは、過去の入力と出力が両方ともゼロであるという仮定に相当します。初期の遅延出力を関数 filter の 4 番目の入力パラメーターを使用して設定するか、2 番目の出力パラメーターを使用して最後の遅延出力にアクセスします。
[y,zf] = filter(b,a,x,zi)
初期および最終の状態にアクセスすることは、データをセクションに分けてフィルター処理する場合、特にメモリの制約を考慮しなければならない場合に便利です。たとえば、2 つのセグメントで各 5000 点のデータを収集したとしましょう。
x1 = randn(5000,1); % Generate two random data sequences. x2 = randn(5000,1);
最初のシーケンス x1 は最初の 10 分間のデータに、2 番目のシーケンス x2 はその後 10 分間のデータに対応しています。全体のシーケンスは、x = [x1;x2] です。両方のシーケンスを保持するために十分なメモリがない場合は、サブシーケンス x1 と x2 を 1 つずつフィルター処理します。フィルター処理されたシーケンスの連続性を確保するために、x1 の最終条件を x2 のフィルター処理における初期条件として使用します。
[y1,zf] = filter(b,a,x1); y2 = filter(b,a,x2,zf);
関数 filtic は、filter の初期条件を生成します。filtic は、指定した過去の入出力をフィルターの動作に反映させるように、遅延ベクトルを計算します。関数 filtic を使用して上記と同じ出力遅延値 zf を得るには、以下を使用します。
zf = filtic(b,a,flipud(y1),flipud(x1));
これは、適切な初期条件がフィルター処理開始時の過渡的な影響を抑える役目をするため、短いデータ シーケンスをフィルター処理する場合に便利です。