Main Content

filter (Galois field)

ガロア体に対する 1 次元デジタル フィルター

構文

y = filter(b,a,x)
[y,zf] = filter(b,a,x)

説明

y = filter(b,a,x) は、分子係数ベクトル b と分母係数ベクトル a で表されるフィルターを使用して、ベクトル x 内のデータをフィルター処理します。ベクトル ba、および x は、同じ体にあるガロア ベクトルでなければなりません。a(1)1 でなければ、filtera(1) でフィルター係数を正規化します。結果として、a(1) は非ゼロでなければなりません。

フィルターは、以下に示す標準の差分方程式の "直接 II 型転置" として実装されます。

a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) ...
                      - a(2)*y(n-1) - ... - a(na+1)*y(n-na)

[y,zf] = filter(b,a,x) は、ガロア ベクトル zf のフィルター遅延の最終条件を返します。ベクトルの長さ zfmax(size(a),size(b))-1 となります。

すべて折りたたむ

ガロア体の 1 次元デジタル フィルター関数を使用する場合、データは分母係数ベクトルの最初の要素によって正規化されます。

a = gf([2 3 5 7],3);
b = gf([1 3],3);
x = gf(randi([0,7],10,1),3);
filt_x = filter(b,a,x)
 
filt_x = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
 
Array elements = 
 
   6
   6
   3
   4
   7
   4
   2
   2
   0
   5

分母係数ベクトルの最初の係数は、a(1) = 2 です。関数がデータを正規化することを確認するには、フィルター済みデータを手動で正規化します。isequal を使用して出力を比較します。それらが等しいことが確認できます。

filt_x2 = a(1) * filter(b/a(1),a,x)
 
filt_x2 = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
 
Array elements = 
 
   6
   6
   3
   4
   7
   4
   2
   2
   0
   5
isequal(filt_x,filt_x2)
ans = logical
   1

バージョン履歴

R2006a より前に導入

参考