ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

データのフィルター処理

はじめに

MATLAB® のさまざまな IEEE® 関数で、生データの変動を成形する差分方程式とフィルターを使用できます。これらの関数は、ベクトルと行列に作用します。フィルター処理は、データの高周波の変動を滑らかにしたり、特定の周波数の周期的なトレンドを除きたい場合に使用します。

ベクトル入力は、サンプリングされた単一のデータ信号 (または列) を表します行列の入力に対して、各信号は行列の列に対応し、各データ サンプルは行に対応します。

フィルター関数

関数

y = filter(b,a,x)

は、ベクトル ab により記述されたフィルターで、ベクトルx のデータを処理し、フィルター処理されたデータ y を作成します。

関数 filter は、以下の差分方程式で示される一般的なタップ付遅延線形フィルターです。

ここで、n は現在のサンプルのインデックスで、 はベクトル a で記述される多項式の次数、 はベクトル b で記述される多項式の次数です。出力 y(n) は、現在の入力とその前の入力 x(n) x(n – 1)..., および、前の出力 y(n – 1) y(n – 2)... の線形結合です .

例: 移動平均フィルター

4 時間枠 (現在の 1 時間とそれまでの 3 時間) の平均交通量を求めるには、移動平均フィルターを使って、count.dat のデータを平滑化します。このプロセスは、次の差分方程式で表されます。

対応するベクトルは、次のようになります。

a = 1;
b = [1/4 1/4 1/4 1/4];

この例のデータの読み込みの詳細については、「count.dat データの読み込み」を参照してください。

  1. count の最初の列を取り出し、ベクトル x に割り当てます。

    x = count(:,1);
    
  2. データの 4 時間の移動平均は、次のように計算します。

    y = filter(b,a,x);
    
  3. プロット内で実線で表示されるフィルター処理されたデータは、count の 4 時間移動平均です。オリジナル データは、破線で表示されます。

    オリジナル データと成形したデータのプロット

例: 離散フィルター

離散フィルターを使って、入力信号に伝達関数を適用してデータを成形します。

目的に応じて、選択した伝達関数は、データの変動の振幅と位相をさまざまな周波数において変更し、より平滑化した出力、またはより粗い出力を生成します。

次の差分方程式を z 変換すると、

次の伝達関数になります。

ここで、Y(z) は、フィルター処理された出力 y(n) の z 変換 です。係数 ba は、z 変換により変更されません。

デジタル信号処理 (DSP) では、 の有理式で伝達関数を記述し、分子と分母の式は の昇べきの順に並べるのが通例です。

次の伝達関数を考えます。

この伝達関数を count.dat のデータに適用します。

  1. ワークスペースに行列 count を読み込みます。

    load count.dat;
    
  2. 最初の列を抽出し、x に割り当てます。

    x = count(:,1);
    
  3. の昇べきの順に並んだ分母の係数を入力して、 を表します。

    a = [1 0.2];
    
  4. 分子の係数を入力して、 を表します。

    b = [2 3];
    
  5. フィルター関数を呼び出します。

    y = filter(b,a,x);
    
  6. オリジナル データと成形したデータとを重ね書きして比べます。

    t = 1:length(x);
    plot(t,x,'-.',t,y,'-'), grid on
    legend('Original Data','Shaped Data',2)
    

    このプロットから、このフィルターは第一にオリジナル データの振幅を変更していることがわかります。

    オリジナル データと成形したデータのプロット

この情報は役に立ちましたか?