様々な型の対称ウインドウを計算
win_l=window('re',n) win_l=window('tr',n) win_l=window('hn',n) win_l=window('hm',n) win_l=window('kr',n,Beta) [win_l,cwp]=window('ch',n,par)
ウインドウの長さ
2要素のベクトル par=[dp,df])
のパラメータで,
dp
(0<dp<.5
)
はメインローブの幅を規定し,df
はサイドローブの高さ
(df>0
)を規定します.
これら2つの片方のみを指定することができ,
もう片方には -1
を指定する必要があります.
カイザーウインドウのパラメータ Beta >0
).
ウインドウ
未定義のチェビシェフウインドウのパラメータ
デジタル信号処理用の様々な対称ウインドウを計算する関数です.
カイザーウインドウは,準最適ウインドウ関数です.
Beta
は任意の正の実数で,ウインドウの形状を定義します.
整数 n
はウインドウの長さです.
構築の際,この関数は,k = n/2
,すなわち,ウインドウの
中央,における最大値を 1 にし,ウインドウの端に向かって減少させます.
Beta
の大きさを大きくすると,ウインドはより狭くなります;
Beta = 0
の場合,矩形ウインドウと同じになります.
逆に,Beta
を大きくすると,フーリエ変換における
メインローブの幅が増加し,振幅のサイドローブは減少します.
つまり,このパラメータはメインローブの幅とサイドローブの面積の
トレードオフを制御します.
Beta | ウインドウ形状 |
0 | 矩形形状 |
5 | ハミングウインドウを近似 |
6 | ハニングウインドウを近似 |
8.6 | ブラックマンウインドウを近似 |
チェビシェフウインドウは,指定した特定のサイドローブの高さのもとで, メインローブの幅を最小化します. このウインドウの特徴は,等リプル特性であり, 全てのサイドローブは同じ高さとなります.
ハニングおよびハミングウインドウは非常に似ており,
パラメータ Beta
の選択のみが異なります:
w=Beta+(1 - Beta)*cos(2*%pi*x/(n-1))
Beta
はハニングウインドでは 1/2 ,
ハミングウインドウでは 0.54 です.
clf() N=24; whm=window('hm',N);//Hamming window wkr=window('kr',N,6);//Hamming Kaiser window wch=window('ch',N,[0.005,-1]);//Chebychev window //plot the window profile subplot(121);plot((1:N)',[whm;wkr;wch]') set(gca(),'grid',[1 1]*color('gray')) xlabel("n") ylabel("w_n") title(gettext("Profile plot")) //plot the magnitude of the frequency responses n=256; [Whm,fr]=frmag(whm,n); [Wkr,fr]=frmag(wkr,n); [Wch,fr]=frmag(wch,n); subplot(122);plot(fr',20*log10([Whm;Wkr;Wch]')) set(gca(),'grid',[1 1]*color('gray')) xlabel(gettext("Pulsation (rad/s)")) ylabel(gettext("Magnitude (dB)")) legend(["Hamming N=24";"Kaiser N=24, Beta=6";"Chebychev N=24, dp=0.005"]); title(gettext("Magnitude plot")) | ![]() | ![]() |
clf() N=140; w1=window('kr',N,1); w2=window('kr',N,2); w4=window('kr',N,4); w8=window('kr',N,8); w16=window('kr',N,16); //plot the window profile plot((1:N)',[w1;w2;w4;w8;w16]') set(gca(),'grid',[1 1]*color('gray')) legend("$\beta="+string([1;2;4;8;16])+'$',[55,0.3]) xlabel("n") ylabel("w_n") title(gettext("Comparison of Kaiser window profiles")) | ![]() | ![]() |
clf() N=140; w1=window('ch',N,[0.001,-1]); w2=window('ch',N,[0.05,-1]); w3=window('ch',N,[-1,0.4]); //plot the window profile subplot(121);plot((1:N)',[w1;w2;w3]') set(gca(),'grid',[1 1]*color('gray')) //legend("$\beta="+string([1;2;4;8;16])+'$',[55,0.3]) xlabel("n") ylabel("w_n") title(gettext("Comparison of Chebychev window profiles")) //plot the magnitude of the frequency responses n=256; [W1,fr]=frmag(w1,n); [W2,fr]=frmag(w2,n); [W3,fr]=frmag(w3,n); subplot(122);plot(fr',20*log10([W1;W2;W3]')) set(gca(),'grid',[1 1]*color('gray')) xlabel(gettext("Pulsation (rd/s)")) ylabel(gettext("Magnitude (dB)")) legend(["Chebychef dp=0.001";"Chebychef dp=0.05";"Chebychef df=0.4"]); title(gettext("Chebychev window Magnitude plot")) | ![]() | ![]() |
IEEE. Programs for Digital Signal Processing. IEEE Press. New York: John Wiley and Sons, 1979. Program 5.2.