Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

filter

timeseries オブジェクトの周波数成分の変更

説明

tsout = filter(tsin,b,a) は、有理伝達関数フィルター b(z−1)/a(z−1) を、timeseries オブジェクト tsin で等間隔に配置されているデータに適用します。分子 b と分母 a は、伝達関数係数を含むベクトルです。

tsout = filter(tsin,b,a,ind) は、フィルター処理する列または行のインデックスを指定します。ind は、列方向のデータ (tsin.IsTimeFirsttrue) の列インデックスと行方向のデータ (tsin.IsTimeFirstfalse) の行インデックスを表す整数のベクトルです。

すべて折りたたむ

この例では、一連のデータに次の伝達関数を適用します。

H(z-1)=b(z-1)a(z-1)=2+3z-11+0.2z-1

count.dat の行列 count から timeseries オブジェクトを作成します。

load count.dat
tsin = timeseries(count(:,1),[1:24]);

伝達関数の分母係数と分子係数を入力します。係数を z-1 の昇べきの順に並べて、1+0.2x および 2-3z-1 を表します。

a = [1 0.2];
b = [2 3];

filter を使用して伝達関数を適用し、元のデータをフィルター処理されたデータと比較します。

tsout = filter(tsin,b,a);
plot(tsin)
hold on
plot(tsout)
legend('Original Data','Filtered Data','Location','NorthWest')

Figure contains an axes. The axes with title Time Series Plot:unnamed contains 2 objects of type line. These objects represent Original Data, Filtered Data.

入力引数

すべて折りたたむ

入力 timeseries。スカラーとして指定します。tsin は等間隔でサンプリングされていなければなりません。

データ型: timeseries

伝達関数の分子係数。スカラーまたはベクトルとして指定します。

伝達関数の分母係数。スカラーまたはベクトルとして指定します。

行または列インデックス。正の整数値スカラーまたはベクトルとして指定します。ind は、列方向のデータ (tsin.IsTimeFirsttrue) の列インデックスと行方向のデータ (tsin.IsTimeFirstfalse) の行インデックスを表します。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

詳細

すべて折りたたむ

有理伝達関数

Z 変換領域でのベクトルの filter 操作の入出力記述が有理伝達関数です。有理伝達関数は次の形式になります。

Y(z)=b(1)+b(2)z1+...+b(nb+1)znb1+a(2)z1+...+a(na+1)znaX(z),

これは、FIR フィルターと IIR フィルターの両方を扱います[1]na はフィードバック フィルターの次数、nb はフィードフォワード フィルターの次数です。

有理伝達関数は、次の差分方程式で表すこともできます。

a(1)y(n)=b(1)x(n)+b(2)x(n1)+...+b(nb+1)x(nnb)a(2)y(n1)...a(na+1)y(nna).

さらに有理伝達関数は、次の図に示すように直接型 II 転置構成の実装で表すこともできます。正規化のため、a(1) = 1 と仮定します。

サンプル m での関数 filter の動作は、次のように、時間領域での差分方程式で与えられます。

y(m)=b(1)x(m)+w1(m1)w1(m)=b(2)x(m)+w2(m1)a(2)y(m)       =                 wn2(m)=b(n1)x(m)+wn1(m1)a(n1)y(m)wn1(m)=b(n)x(m)a(n)y(m).

R2006a より前に導入