Signal Processing Toolbox | ![]() ![]() |
関数filter
filter
は、転置直接型(Direct Form )II 構造として実現されます。
ここで、n-1はフィルタの次数です。これは、遅れ要素の最小数をもつ正準型です。
を計算します。最も基本的な型では、filter
は遅延出力zi(1), i = 1, ..., n-1を0に初期化します。これは、過去の入力と出力が共にゼロと仮定することと等しくなります。4番目の入力引数を使って、初期遅延出力をfilter
に設定するか、または、2番目の出力引数を使って、最終的な遅延を出力します。
[y,zf] = filter(b,a,x,zi)
初期条件や最終条件を利用することは、特にメモリの制限を考慮する必要がある場合に、ある部分毎にデータをフィルタ処理するのに有効です。それぞれ、5000点の2つのセグメントのデータを収集したとします。
x1 = randn(5000,1); % 2つのランダムなデータ列 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));
とします。これは、適切な初期条件がフィルタ処理開始時の過渡影響を抑える役目をするため、短いデータ列をフィルタ処理する際に役立ちます。
![]() | 関数filterによるフィルタ処理 | フィルタ処理のための関数 | ![]() |