ドキュメンテーション

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

ウィンドウ

ウィンドウを使用する理由

デジタル フィルター設計とスペクトル推定のいずれにおいても、ウィンドウ関数の選択は、結果全体の特性を決定する上で重要な役割を果たします。ウィンドウの主な役割は、無限級数の打ち切りにより生じるギブズ現象の影響を低減させることです。

使用可能なウィンドウ関数

ウィンドウ

関数

バートレット-ハン ウィンドウ

barthannwin

バートレット ウィンドウ

bartlett

ブラックマン ウィンドウ

blackman

ブラックマン・ハリス ウィンドウ

blackmanharris

ボーマン ウィンドウ

bohmanwin

チェビシェフ ウィンドウ

chebwin

フラット トップ ウィンドウ

flattopwin

ガウス ウィンドウ

gausswin

ハミング ウィンドウ

hamming

ハン ウィンドウ

hann

カイザー ウィンドウ

kaiser

Nuttall のブラックマン・ハリス ウィンドウ

nuttallwin

パルザン (de la Vallée-Poussin) ウィンドウ

parzenwin

箱型ウィンドウ

rectwin

Tapered cosine ウィンドウ

tukeywin

三角ウィンドウ

triang

グラフィカル ユーザー インターフェイス ツール

Signal Processing Toolbox™ には、ウィンドウの操作を行うための以下の 2 つのグラフィカル ユーザー インターフェイス ツールが用意されています。

  • ウィンドウの設計と解析ツール (wintool)

  • ウィンドウの設計および解析ツール (wvtool)

詳細は、これらのツールのリファレンス ページを参照してください。

基本的な形状

基本的なウィンドウは "箱型ウィンドウ" で、すべての要素が適切な長さをもつベクトルです。長さ 50 の箱型ウィンドウは、以下のようになります。

n = 50;
w = rectwin(n);

このツールボックスでは、通常、ウィンドウは列ベクトルに格納されるため、次の式と等しくなります。

w = ones(50,1);

ウィンドウの設計と解析ツールを使用してこのウィンドウを作成するには、次のように入力します。

wintool

wintool が開き、既定のハミング ウィンドウが表示されます。[現在のウィンドウ情報] パネルで、タイプ = Rectangular および 長さ = 50 と設定して [適用] をクリックします。

"バートレット (三角) ウィンドウ" は、2 つの箱型ウィンドウのたたみ込みです。関数 bartlett および triang では、同じような三角ウィンドウが計算されますが、以下の 3 つの点が大きく異なります。まず、関数 bartlett は必ず列の両端に 2 つの零をもつウィンドウを返すため、以下に示すように、n が奇数の場合は bartlett(n+2) の両端を除く部分が triang(n) と等しくなります。

Bartlett = bartlett(7);
isequal(Bartlett(2:end-1),triang(5))
ans =
     1

n が偶数の場合にも、やはり、bartlett は 2 つの四角形データ列のたたみ込みとなります。n が偶数の場合は、三角ウィンドウに関する標準的な定義はありません。すなわち、triang の結果の線分の勾配は、この場合の bartlett の勾配より、わずかに急峻になります。

w = bartlett(8); 
[w(2:7) triang(6)]

WinTool における奇数と偶数のバートレット ウィンドウの違いがわかります。

バートレット ウィンドウと三角ウィンドウとの違いの 3 つ目は、これらの関数をフーリエ変換すると明らかになります。バートレット ウィンドウのフーリエ変換は、n が偶数の場合、負となりますが、三角ウィンドウのフーリエ変換は必ず非負となります。

以下の図は、8 点のバートレット ウィンドウと三角ウィンドウのゼロ位相応答をプロットし、その違いを示します。

zerophase(bartlett(8))
hold on
zerophase(triang(8))
legend('Bartlett','Triangular')
axis([0.3 1 -0.2 0.5])

この違いは、ブラックマン・テューキー法などのいくつかのスペクトル推定手法に対するウィンドウを選択する際に重要になる可能性があります。ブラックマン・テューキー法では、自己相関列のフーリエ変換を計算することにより、スペクトル推定値が求められます。得られる推定値は、ウィンドウのフーリエ変換が負となる場合には、いくつかの周波数で負となる可能性があります (Kay [1]、80 ページを参照してください)。

一般的なコサイン ウィンドウ

ブラックマン、フラット トップ、ハミング、ハン、および箱形の各ウィンドウは、すべて "一般的なコサイン ウィンドウ" の特殊な例です。これらのウィンドウは、2π/(N – 1) の倍数の周波数をもつ正弦波列の合成です。ここで、N はウィンドウ長です。特殊な例の 1 つはブラックマン ウィンドウです。

N = 128;
A = 0.42;
B = 0.5;
C = 0.08;
ind = (0:N-1)'*2*pi/(N-1);
w = A - B*cos(ind) + C*cos(2*ind);

前述の式の定数 AB、および C の値を変更すると、ハミング ウィンドウやハン ウィンドウのような異なる一般的なコサイン ウィンドウが生成されます。より高い周波数の余弦項を追加すると、フラット トップ ウィンドウが生成されます。これらのウィンドウの背景にある概念は、ウィンドウを形成する個々の項を加算することにより、周波数領域内の低周波のピークをサイドローブの高さが低くなるような形で合成するというものです。これにより、メインローブの幅が増加するという副作用があります。

ハミング ウィンドウおよびハン ウィンドウは、2 つの定数を設定して生成されるコサイン ウィンドウです。ハミングの場合は、A = 0.54, B = 0.46 で、ハンの場合は、A = 0.5, B = 0.5 です。

初期の MATLAB® コードで示される一般的なコサイン ウィンドウの定義では、A = 0.5 かつ B = 0.5 の場合に、サンプル 1 と n において零点が生じることに注意してください。

この WinTool のスクリーン ショットでは、ブラックマン、ハミング、ハン、フラット トップの各ウィンドウを比較しています。

カイザー ウィンドウ

"カイザー ウィンドウ" は、メインローブのエネルギーとサイドローブのエネルギーとの比率が最大となるような、扁長回転楕円体ウィンドウに対する近似です。特定の長さのカイザー ウィンドウでは、パラメーター β がサイドローブの高さを制御します。与えられた β に対して、サイドローブの高さは、ウィンドウの長さに応じて決まります。ステートメント kaiser(n,beta) では、パラメーター beta をもつ長さ n のカイザー ウィンドウが計算されます。

長さが 50 で β パラメーターにさまざまな値 (1、4、9) をもつカイザー ウィンドウをこの wintool の例に示します。

MATLAB のコマンド ラインを使用して、これらのカイザー ウィンドウを作成するには、以下を入力します。

n = 50;
w1 = kaiser(n,1);
w2 = kaiser(n,4);
w3 = kaiser(n,9);
[W1,f] = freqz(w1/sum(w1),1,512,2);
[W2,f] = freqz(w2/sum(w2),1,512,2);
[W3,f] = freqz(w3/sum(w3),1,512,2);
plot(f,20*log10(abs([W1 W2 W3])))
grid
legend('\beta = 1','\beta = 4','\beta = 9')

β が増加するにつれて、サイドローブの高さが減少し、メインローブの幅が増加します。この WinTool のスクリーン ショットを使用して、β パラメーターを固定した状態で、サイドローブの高さが長さの変化とともにどのようになるかを示すことができます。

MATLAB のコマンド ラインを使用して、これらのカイザー ウィンドウを作成するには、以下を入力します。

w1 = kaiser(50,4);
w2 = kaiser(20,4);
w3 = kaiser(101,4);
[W1,f] = freqz(w1/sum(w1),1,512,2);
[W2,f] = freqz(w2/sum(w2),1,512,2);
[W3,f] = freqz(w3/sum(w3),1,512,2);
plot(f,20*log10(abs([W1 W2 W3])))
grid
legend('length = 50','length = 20','length = 101')

FIR 設計におけるカイザー ウィンドウ

カイザー ウィンドウを使用して、フィルター仕様を満たす FIR フィルターを設計する場合に役立つ 2 つの設計式があります。高さ –α dB のサイドローブを達成するには、βbeta パラメーターを、以下のようにします。

β={0.1102(α8.7),α>50,0.5842(α21)0.4+0.07886(α21),50α21,0,a<21.

遷移幅が Δω rad/sample の場合、次の長さを使用します。

n=α82.285Δω+1.

これらのヒューリスティックス (発見的方法) を使用して設計されたフィルターは、仕様をほぼ満たしますが、これを検証する必要があります。カットオフ周波数 0.5π rad/sample、遷移幅 0.2π rad/sample、および阻止帯域に 40 dB の減衰をもつローパス フィルターを設計するには、以下のようにします。

[n,wn,beta] = kaiserord([0.4 0.6]*pi,[1 0],[0.01 0.01],2*pi);
h = fir1(n,wn,kaiser(n+1,beta),'noscale');

関数 kaiserord では、与えられた周波数領域仕様を満たすのに必要なフィルター次数、カットオフ周波数、およびカイザー ウィンドウの beta パラメーターが推定されます。

通過帯域内のリップルは、阻止帯域内のリップルと、ほぼ同じになります。周波数応答からわかるように、このフィルターはほぼ仕様を満たしています。

fvtool(h,1)

チェビシェフ ウィンドウ

チェビシェフ ウィンドウでは、特定のサイドローブの高さを与えて、メインローブの幅を最小にします。このウィンドウには、等リップル、すなわち、サイドローブがすべて同じ高さをもつという特徴があります。

時間領域のプロットに示されているように、チェビシェフ ウィンドウは両端のサンプルに大きいスパイクをもちます。

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