Signal Processing Toolbox | ![]() ![]() |
表示
[gd,w]=
grpdelay(b,a,n) [gd,f]=
grpdelay(b,a,n,fs) [gd,w]=
grpdelay(b,a,n,'whole') [gd,f]=
grpdelay(b,a,n,'whole',fs) gd=
grpdelay(b,a,w) gd=
grpdelay(b,a,f,fs) grpdelay(b,a)
詳細
フィルタの群遅延とは、フィルタの平均遅れを周波数の関数として測定したものです。これは、フィルタの位相応答の1次導関数に負の符号を付けたものです。フィルタの複素周波数応答がH(ej)の場合、群遅延は、つぎのように表されます。
[gd,w]
は、ベクトル =
grpdelay(b,a,n)
b
およびa
に分子および分母の係数が与えられた場合、ディジタルフィルタのn
点の群遅延を出力します。
は、群遅延gd
とラジアン単位のn
個の周波数点を含むベクトルw
を出力します。grpdelay
は、単位円の上半分の円周上の等間隔なn
点での群遅延を計算するため、w
は0との間のn点を含みます。
n
の値を厳密に2のベキ乗にすると、FFTアルゴリズムを使った高速計算が可能になります。
[gd,f]
は、正のサンプリング周波数 =
grpdelay(b,a,n,fs)
fs
をヘルツ単位で設定します。これは、群遅延が計算される実際の周波数点を含む長さn
のベクトルf
をヘルツ単位で出力します。f
は、0とfs/2
の間のn
点を含みます。
[gd,w]
および =
grpdelay(b,a,n,'whole')
[gd,f]
は、単位円全体の円周上の =
grpdelay(b,a,n,'whole',fs)
n
点を使用します(0〜2または0〜
fs
の間)。
gd
は、 =
grpdelay(b,a,f,fs)
w
(ラジアン単位)またはf
(ヘルツ単位)の点で計算した群遅延をそれぞれ出力します。ここで、fs
はヘルツ単位のサンプリング周波数です。
出力引数を設定せずにgrpdelay
を使用すると、周波数に対する群遅延をカレントのFigureウィンドウにプロット表示します。
grpdelay
は、実数入力システムと複素数入力システムのいずれに対しても機能します。
例題
Butterworthフィルタb(z)/a(z)の群遅延をプロットします。
[b,a] =
butter(6,0.2);
grpdelay(b,a,128)
つぎに、システムの群遅延と位相遅れを同じグラフ上にプロットします。
gd=
grpdelay(b,a,512); gd(1)=
[]; % NaNsを防止 [h,w]=
freqz(b,a,512); h(1)=
[]; w(1)=
[]; pd=
-unwrap(angle(h))./w; plot(w,gd,w,pd,':') xlabel('Frequency (rad/sec)'); grid; legend('Group Delay','Phase Delay');
アルゴリズム
grpdelay
は、フィルタ係数と単位ランプを乗算します。フーリエ変換後は、この処理は微分に対応します。
参考
|
複素ケプストラム解析 |
|
1次元高速フーリエ変換 |
|
ディジタルフィルタの周波数応答 |
|
Hilbert変換 |
|
逆複素ケプストラム |
|
実数ケプストラムと最小位相復元 |
![]() | gauspuls | hamming | ![]() |