ドキュメンテーション

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

fsamp2

周波数サンプリングを使用する 2 次元 FIR フィルター

構文

h = fsamp2(Hd)
h = fsamp2(f1, f2, Hd,[m n])

説明

h = fsamp2(Hd) は周波数応答が Hd の 2 次元 FIR フィルターを設計し、フィルター係数を行列 h で返します (fsamp2h を計算分子として返します。これは filter2 と共に使用するのに適した形式です)。フィルター h には Hd の点を通過する周波数応答があります。Hdmn 列の場合、hmn 列です。

fsamp2 は直交座標平面上の点でサンプリングされた目的の 2 次元周波数応答に基づいて、2 次元 FIR フィルターを設計します。Hd は周波数軸 xy に沿って -1.0 ~ 1.0 に等間隔に配置された点でサンプリングされた目的の周波数応答を格納する行列です。ここで、1.0 はサンプリング周波数の 1/2、つまり π ラジアンに相当します。

Hd(f1,f2)=Hd(ω1,ω2)|ω1=πf1,ω2=πf1

結果の精度を上げるには、freqspace によって返される周波数点を使用して Hd を作成してください。

h = fsamp2(f1, f2, Hd,[m n])mn 列の FIR フィルターを生成します。具体的には、ベクトル f1f2 の点でフィルター応答のマッチングを行います。周波数ベクトル f1f2 は正規化された周波数にあります。ここで、1.0 はサンプリング周波数の 1/2 つまり π ラジアンに相当します。結果として得られるフィルターは、最小二乗法で目的の応答に可能な限り近似します。最適な結果を得るには、目的の周波数点が m*n 個以上存在しなければなりません。指定する点の数が m*n 未満の場合、fsamp2 は警告を表示します。

クラス サポート

入力行列 Hd のクラスは double または任意の整数です。fsamp2 に対するその他の入力のクラスはすべて double でなければなりません。出力のクラスはすべて double です。

すべて折りたたむ

この例では、fsamp2 を使用した 2 次元バンドパス フィルターの作成方法を説明します。

freqspace を使用して、周波数範囲ベクトル f1 および f2 を作成します。これらのベクトルの長さは 21 です。

[f1,f2] = freqspace(21,'meshgrid');

中心周波数から各位置までの距離を計算します。

r = sqrt(f1.^2 + f2.^2);

目的とするバンドパス応答を格納する行列 Hd を作成します。この例で目的とする通過帯域は 0.1 ~ 0.5 (正規化周波数。ここで、1.0 はサンプリング周波数の 1/2 つまり ラジアンに相当します) です。

Hd = ones(21); 
Hd((r<0.1)|(r>0.5)) = 0;

理想的なバンドパス応答を表示します。

colormap(parula(64))
mesh(f1,f2,Hd)

周波数サンプリングを使用して、この周波数応答を最適に引き出すフィルターを設計します。

h = fsamp2(Hd);

このフィルターの実際の周波数応答を表示します。

freqz2(h)

アルゴリズム

fsamp2 は目的とする周波数応答の逆離散フーリエ変換を行ってフィルター h を計算します。目的とする周波数応答が実数で対称 (ゼロ位相) となる場合、結果として得られるフィルターもゼロ位相になります。

参考文献

[1] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 213-217.

R2006a より前に導入

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