このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
データのフィルター処理
差分方程式のフィルター処理
フィルターは、データ内の高周波変動を平滑化したり、データから特定の周波数の周期的なトレンドを除去したりできるデータ処理技術です。MATLAB® では、関数 filter
は、タップ付遅延線形フィルターを表す次の差分方程式に従って、データ x のベクトルをフィルター処理します。
この式で a および b は、フィルターの係数のベクトルで、Na はフィードバック フィルターの次数、Nb はフィードフォワード フィルターの次数です。n は、x の現在の要素のインデックスです。出力 y(n) は、x および y の現在の要素と前の要素の線形結合です。
関数 filter
は、指定された係数ベクトル a と b を使用して、入力データ x をフィルター処理します。フィルターを表現する差分方程式の詳細については、[1]を参照してください。
交通量データの移動平均フィルター
関数 filter
は、一般的なデータ平滑化手法である移動平均フィルターを実装するための 1 つの方法です。
次の差分方程式は、時間依存データを平均するフィルターを表しており、現在の時間から 3 時間前までのデータを対象としています。
時間経過に沿った交通量を表すデータをインポートし、最初の列の車両数をベクトル x
に代入します。
load count.dat
x = count(:,1);
フィルターの係数ベクトルを作成します。
a = 1; b = [1/4 1/4 1/4 1/4];
データの 4 時間の移動平均を計算し、元のデータとフィルター処理されたデータの両方をプロットします。
y = filter(b,a,x); t = 1:length(x); plot(t,x,'--',t,y,'-') legend('Original Data','Filtered Data')
データの振幅の変更
この例では、伝達関数を適用してデータのベクトルの振幅を変更する方法を説明します。
デジタル信号処理では、フィルターが伝達関数で表現されることがよくあります。差分方程式
の Z 変換は次の伝達関数になります。
伝達関数
を使用して、count.dat
のデータの振幅を変更します。
データを読み込み、最初の列をベクトル x
に代入します。
load count.dat
x = count(:,1);
伝達関数 に従って、フィルターの係数ベクトルを作成します。
a = [1 0.2]; b = [2 3];
フィルター処理されたデータを計算し、元のデータとフィルター処理されたデータの両方をプロットします。このフィルターは、主に元のデータの振幅を変更します。
y = filter(b,a,x); t = 1:length(x); plot(t,x,'--',t,y,'-') legend('Original Data','Filtered Data')
参照
[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1999.
参考
filter
| conv
| filter2
| smoothdata
| movmean