ドキュメンテーション

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

fir1

ウィンドウベースの FIR フィルターの設計

構文

b = fir1(n,Wn)
b = fir1(n,Wn,ftype)
b = fir1(___,window)
b = fir1(___,scaleopt)

説明

b = fir1(n,Wn) はハミング ウィンドウを使用し、線形位相をもつ n 次のローパス、バンドパスまたはマルチバンド FIR フィルターを設計します。フィルター タイプは、Wn の要素数によって異なります。

b = fir1(n,Wn,ftype)ftype の値および Wn の要素数に応じてローパス、ハイパス、バンドパス、バンドストップまたはマルチバンド フィルターを設計します。

b = fir1(___,window) は、window で指定したベクトルと前の構文の任意の引数を使用してフィルターを設計します。

b = fir1(___,scaleopt) では、フィルターの振幅応答が正規化されているかどうかを追加で指定します。

メモ:   任意の周波数応答をもつウィンドウを適用したフィルターを設計するには、fir2 を使用します。

すべて折りたたむ

通過帯域 ラジアン/サンプルをもつ 48 次の FIR バンドパス フィルターを設計します。その振幅応答と位相応答を可視化します。

b = fir1(48,[0.35 0.65]);
freqz(b,1,512)

chirp.mat を読み込みます。ファイルに含まれている信号 y のパワーの大部分は、Fs/4 (ナイキスト周波数の半分) を超えています。サンプルレートは 8192 Hz です。

34 次の FIR ハイパス フィルターを、Fs/4 より低い信号成分を減衰させるように設計します。カットオフ周波数 0.48、30 dB のリップルをもつチェビシェフ ウィンドウを使用します。

load chirp

t = (0:length(y)-1)/Fs;

bhi = fir1(34,0.48,'high',chebwin(35,30));
freqz(bhi,1)

信号をフィルター処理します。元の信号とハイパス フィルター処理された信号を表示します。両方のプロットに同じ y 軸のスケールを使用します。

outhi = filter(bhi,1,y);

subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outhi)
title('Highpass Filtered Signal')
xlabel('Time (s)')
ylim(ys)

同じ仕様でローパス フィルターを設計します。信号をフィルター処理し、結果を元の信号と比較します。両方のプロットに同じ y 軸のスケールを使用します。

blo = fir1(34,0.48,chebwin(35,30));

outlo = filter(blo,1,y);

subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outlo)
title('Lowpass Filtered Signal')
xlabel('Time (s)')
ylim(ys)

ラジアン/サンプル未満および ラジアン/サンプルの間の正規化周波数を減衰させる 46 次の FIR フィルターを設計します。これを bM とします。

ord = 46;

low = 0.4;
bnd = [0.6 0.9];

bM = fir1(ord,[low bnd]);

bM を再設計し、減衰させていた帯域を通し、他の周波数を停止させるようにします。この新しいフィルターを bW とします。fvtool を使用してフィルターの周波数応答を表示します。

bW = fir1(ord,[low bnd],'DC-1');

hfvt = fvtool(bM,1,bW,1);
legend(hfvt,'bM','bW')

ハン ウィンドウを使用して bM を再設計します ('DC-0' はオプションです)。ハミングによる設計とハンによる設計の振幅応答を比較します。

hM = fir1(ord,[low bnd],'DC-0',hann(ord+1));

hfvt = fvtool(bM,1,hM,1);
legend(hfvt,'Hamming','Hann')

テューキー ウィンドウを使用して bW を再設計します。ハミングによる設計とテューキーによる設計の振幅応答を比較します。

tW = fir1(ord,[low bnd],'DC-1',tukeywin(ord+1));

hfvt = fvtool(bW,1,tW,1);
legend(hfvt,'Hamming','Tukey')

入力引数

すべて折りたたむ

フィルター次数。整数スカラーで指定します。

ハイパスおよびバンドストップの構成に対し、fir1 は常に偶数のフィルター次数を使用します。奇数の次数の対称 FIR フィルターはナイキスト周波数で 0 ゲインをもたなければならないため、次数は偶数でなければなりません。ハイパスまたはバンドストップ フィルターに奇数の n を指定した場合、fir1n を 1 だけ増やします。

データ型: double

周波数制約。スカラー、2 要素ベクトルまたは多要素ベクトルとして指定します。Wn のすべての要素は厳密に 0 より大きく、かつ厳密に 1 より小さくなければなりません。ここで、1 はナイキスト周波数に相当し、0 < Wn <  1 となります。ナイキスト周波数はサンプルレートの 1/2、つまり π  ラジアン/サンプルです。

  • Wn がスカラーの場合、fir1 は、カットオフ周波数 Wn をもつローパス フィルターまたはハイパス フィルターを設計します。カットオフ周波数は、フィルターの正規化ゲインが –6 dB となる周波数です。

  • Wn が 2 要素ベクトル [w1 w2] (ここで、w1 < w2) の場合、fir1 は低域カットオフ周波数 w1 および高域カットオフ周波数 w2 をもつバンドパス フィルターまたはバンドストップ フィルターを設計します。

  • Wn が多要素ベクトル [w1 w2 ... wn] (ここで、w1 < w2 < … < wn) の場合、fir1 は 帯域が 0 < ω < w1, w1 < ω < w2,  …, wn < ω < 1 である n 次のマルチバンド フィルターを返します。

データ型: double

フィルターの種類。次のいずれかとして指定します。

  • 'low' はカットオフ周波数 Wn をもつローパス フィルターを指定します。'low' はスカラー Wn の既定値です。

  • 'high' はカットオフ周波数 Wn をもつハイパス フィルターを指定します。

  • Wn が 2 要素ベクトルの場合、'bandpass' はバンドパス フィルターを指定します。'bandpass' は、Wn が 2 要素をもつときの既定値です。

  • Wn が 2 要素ベクトルの場合、'stop' はバンドストップ フィルターを指定します。

  • 'DC-0' は、マルチバンド フィルターの最初の帯域が阻止帯域であることを指定します。Wn に 3 つ以上の要素がある場合は 'DC-0' が既定の設定です。

  • 'DC-1' は、マルチバンド フィルターの最初の帯域が通過帯域であることを指定します。

データ型: char

ウィンドウ。ベクトルとして指定します。ウィンドウ ベクトルの要素数は n + 1 でなければなりません。window を指定しない場合、fir1 はハミング ウィンドウを使用します。利用可能なウィンドウについては、「ウィンドウ」を参照してください。

次数が奇数のハイパスまたはバンドストップ フィルターを設計しようとする場合、fir1 が自動的に window の長さを増やすことはありません。

例: kaiser(n+1,0.5) は、形状パラメーター 0.5 のカイザー ウィンドウを n 次のフィルターで使用するように指定します。

例: hamming(n+1) は、ウィンドウを指定しない場合と同じです。

データ型: double

正規化オプション。'scale' または 'noscale' として指定します。

  • 'scale' は、通過帯域の中心でフィルターの振幅応答が 1 (0 dB) になるように係数を正規化します。

  • 'noscale' は係数を正規化しません。

データ型: char

出力引数

すべて折りたたむ

フィルター係数。長さ n + 1 の行ベクトルとして返されます。係数は Z 変換変数 z の降べきの順に並べ替えられます。

B(z) = b(1) + b(2)z + … + b(n+1)z–n.

アルゴリズム

fir1 は、最小二乗近似を使用して、フィルター係数を計算し、window によりインパルス応答を平滑化します。

参照

[1] Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Programs for Digital Signal Processing. New York: IEEE Press, 1979, Algorithm 5.2.

拡張機能

R2006a より前に導入

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