関数 > 信号処理 > スペクトル解析 > 例: 信号ウィンドウ処理
例: 信号ウィンドウ処理
次の関数を使用して信号ウィンドウ処理を行います。
理想/打ち切りローパスフィルタのインパルス応答
1. 正規化されたカットオフ周波数 0.15 の理想ローパスフィルタのインパルス応答 h を定義します。
クリックしてこの式をコピー
2. インパルス応答を定義します。
クリックしてこの式をコピー
実現可能な、長さが有限のフィルタのインパルス応答は有限でなければならないので、この理想応答は扱いやすい数の項で打ち切られます。
3. ウィンドウ処理を行わずに周波数応答を直接打ち切ったときの影響を調べるため、理想応答の中央の N 個の項のみから成り、シフトされて因果性を満たすようになった、長さが N のフィルタを定義します。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
以降の例では、練習として N = N2 に設定して項が増えたときの影響を確認します。
4. 一連の項にインパルス応答関数を適用し、返された関数をプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
5. gain関数を使用して、この打ち切られた信号の周波数応答を計算しますが、その前に周波数レンジ (サンプル周波数の倍数) を定義します。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
6. gain 関数の離散マグニチュードを新しい配列に格納します。
クリックしてこの式をコピー
7. G の最大の大きさとそれに対応する周波数を求めます。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
項の数が N1 = 63 の場合、最大ゲイン 1.083 は周波数 freq = 0.134 で生じます。
項の数が N2 = 127 の場合、最大ゲイン 1.092 は周波数 freq = 0.142 で生じるので、帯域の境界に近づきます。
周波数 freq = 0.2 では、ゲインはほぼゼロに低下します。次の各例でのこの周波数付近におけるゲインを比較します。
8. 定義した範囲で gain 関数をプロットし、大きさの値が最大となる周波数を調べます。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
通過帯域の境界におけるオーバーシュートをギブスの現象と呼びます。上の式でフィルタの次数 N を N1 = 63 から N2 = 127 に上げると、オーバーシュートは帯域の境界に近づきますが、その振幅は減少しません。
フィルタの次数 N が上がると、1 から 0 への遷移が急激になります。
さらに望ましい周波数応答を得る 1 つの方法として、理想インパルス応答をウィンドウ処理して、フィルタのインパルス応答の境界における 0 への遷移を滑らかにします。項ごとにウィンドウに応答ベクトル r が掛け合わされます。
三角ウィンドウ
関数 triangular は、幅 N の三角 (バートレット) ウィンドウを返します。
返されるベクトルの j 番目の要素は次の式によって求められます。
クリックしてこの式をコピー
ここで
クリックしてこの式をコピー
クリックしてこの式をコピー
ここで
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
1. フィルタの次数 N にこの関数を適用し、返されたベクトルをプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
2. ウィンドウを適用したインパルス応答を計算します。
クリックしてこの式をコピー
3. gain 関数を使用して、このフィルタの、係数 vt、周波数 k/1000 でのゲイン (単位: dB) を計算してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
Hanning ウィンドウ
関数 hanning は、幅 N の Hanning ウィンドウを返します。
返されるベクトルの k 番目の要素は次の式によって求められます。
クリックしてこの式をコピー
1. フィルタの次数 N にこの関数を適用し、返されたベクトルをプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
2. ウィンドウを適用したインパルス応答を計算します。
クリックしてこの式をコピー
3. gain 関数を使用して、このフィルタの、係数 vhn、周波数 k/1000 でのゲイン (単位: dB) を計算してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
阻止域のリップルは約 -45 dB です。
Hamming ウィンドウ
関数 hamming は、幅 N の Hamming ウィンドウを返します。
返されるベクトルの k 番目の要素は次の式によって求められます。
クリックしてこの式をコピー
1. フィルタの次数 N にこの関数を適用し、返されたベクトルをプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
2. ウィンドウを適用したインパルス応答を計算します。
クリックしてこの式をコピー
3. gain 関数を使用して、このフィルタの、係数 vhm、周波数 k/1000 でのゲイン (単位: dB) を計算してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
阻止域のリップルは約 -55 dB です。
Blackman ウィンドウ
関数 blackman は、幅 N の Blackman ウィンドウを返します。
返されるベクトルの k 番目の要素は次の式によって求められます。
クリックしてこの式をコピー
1. フィルタの次数 N にこの関数を適用し、返されたベクトルをプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
2. ウィンドウを適用したインパルス応答を計算します。
クリックしてこの式をコピー
3. gain 関数を使用して、このフィルタの、係数 vb、周波数 k/1000 でのゲイン (単位: dB) を計算してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
阻止域のリップルは約 -75 dB です。
Nuttall ウィンドウ
関数 nuttall は、幅 N の Nuttall ウィンドウを返します。
返されるベクトルの k 番目の要素は次の式によって求められます。
クリックしてこの式をコピー
1. フィルタの次数 N にこの関数を適用し、返されたベクトルをプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
2. ウィンドウを適用したインパルス応答を計算します。
クリックしてこの式をコピー
3. gain 関数を使用して、このフィルタの、係数 vnu、周波数 k/1000 でのゲイン (単位: dB) を計算してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
阻止域のリップルは約 -105 dB です。
逓減された矩形のウィンドウ
関数 taprect は、幅 N の逓減された矩形のウィンドウを返します。
このウィンドウは、中央が高さ 1 で水平となり、両端が余弦曲線に従って逓減されています。右端と左端では次の値が使用されます。
クリックしてこの式をコピー
ここで
クリックしてこの式をコピー
n の範囲は 0 から h です。
1. フィルタの次数 N にこの関数を適用し、返されたベクトルをプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
2. ウィンドウを適用したインパルス応答を計算します。
クリックしてこの式をコピー
3. gain 関数を使用して、このフィルタの、係数 vtr、周波数 k/1000 でのゲイン (単位: dB) を計算してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
ガウスウィンドウ
gaussian 関数は、幅 N、パラメータ a のガウスウィンドウを返します。a の値はガウス分散の逆数に比例する実数で、2 < a < 20 を満たす必要があります。
返されるベクトルの k 番目の要素は次の式によって求められます。
クリックしてこの式をコピー
1. フィルタの次数 N にこの関数を適用し、返されたベクトルをプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
2. ウィンドウを適用したインパルス応答を計算します。
クリックしてこの式をコピー
3. gain 関数を使用して、このフィルタの、係数 vg、周波数 k/1000 でのゲイン (単位: dB) を計算してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
阻止域のリップルは約 -95 dB です。
カイザーウィンドウ
kaiser 関数は、幅 N、パラメータ b のカイザーウィンドウを返します。パラメータ b は 2 ≤ b ≤ 20 を満たす必要があります。
返されるベクトルの k 番目の要素は次の式によって求められます。
クリックしてこの式をコピー
1. フィルタの次数 N にこの関数を適用し、返されたベクトルをプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
2. ウィンドウを適用したインパルス応答を計算します。
クリックしてこの式をコピー
3. gain 関数を使用して、このフィルタの、係数 vk、周波数 k/1000 でのゲイン (単位: dB) を計算してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
阻止域のリップルは約 -75 dB です。
チェビシェフウィンドウ
cheby 関数は、幅 N、パラメータ b のチェビシェフ (等リップル) ウィンドウを返します。パラメータ b は最大サイドローブリップル (単位: dB) を指定し、1 < b を満たす必要があります。通常は b > 50 となります。このウィンドウの長さは奇数でなければなりません。チェビシェフウィンドウの計算では、単位円の周囲のいくつかの点において計算されたチェビシェフ多項式の逆離散フーリエ変換が行われます。このウィンドウの詳細については、『Programs for Digital Signal Processing』 (IEEE Press) を参照してください。
1. フィルタの次数 N にこの関数を適用し、返されたベクトルをプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
2. ウィンドウを適用したインパルス応答を計算します。
クリックしてこの式をコピー
3. gain 関数を使用して、このフィルタの、係数 vc、周波数 k/1000 でのゲイン (単位: dB) を計算してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
阻止域のリップルは約 -110 dB です。
余弦逓減度ウィンドウ
costaper 関数は、taprect 関数と同様に、両端が余弦曲線に従う矩形のウィンドウを返します。ただし、パラメータ a を使用して、余弦曲線に従うウィンドウの割合を指定できます。パラメータ a は 0 から 1 の範囲でなければなりません。値を 0 に設定すると矩形のウィンドウが返り、値を 1 に設定すると二乗余弦曲線が返ります。
ウィンドウの逓減部分では、k 番目の要素の値が次の式によって求められます。
クリックしてこの式をコピー
ここで、M はウィンドウのどちらかの端にあたる要素の数であり、a-N によって求められます。
1. フィルタの次数 N にこの関数を適用し、返されたベクトルをプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
2. ウィンドウを適用したインパルス応答を計算します。
クリックしてこの式をコピー
3. gain 関数を使用して、このフィルタの、係数 vrc、周波数 k/1000 でのゲイン (単位: dB) を計算してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
阻止域のリップルは約 -20 dB です。
参考文献
S. Lawrence Marple, Jr., Digital Spectral Analysis with Applications, Prentice-Hall (1987)
Lawrence R. Rabiner and Bernard Gold, Theory and Application of Digital Signal Processing, Prentice-Hall, Inc. (1975)
T. W. Parks and C. S. Burrus, Digital Filter Design, Wiley-Interscience (1987)
これは役に立ちましたか?