Main Content

grpdelay

平均フィルター遅延 (群遅延)

説明

[gd,w] = grpdelay(b,a,n) では、ba に格納されている伝達関数の係数をもつデジタル フィルターに対し、n 点の群遅延の応答ベクトル gd と、それに対応する角周波数ベクトル w が返されます。

[gd,w] = grpdelay(sos,n) では、2 次セクション行列 sos に対応する n 点の群遅延応答が返されます。

[gd,w] = grpdelay(d,n) では、デジタル フィルター dn 点の群遅延応答が返されます。

[gd,w] = grpdelay(___,"whole") では、単位円全体で n 個のサンプル点の群遅延が返されます。

[gd,f] = grpdelay(___,n,fs) では、レート fs でサンプリングされたフィルター信号に設計されたデジタル フィルターに対し、群遅延応答ベクトル gd とそれに対応する物理周波数ベクトル f が返されます。

[gd,f] = grpdelay(___,n,"whole",fs) では、0 から fs の範囲の n 個の点における周波数ベクトルが返されます。

gd = grpdelay(___,win) では、win で提供される正規化周波数で評価された群遅延応答ベクトル gd が返されます。

gd = grpdelay(___,fin,fs) では、fin で提供される物理周波数で評価された群遅延応答ベクトル gd が返されます。

出力引数なしで grpdelay(___) を使用すると、フィルターの群遅延応答がプロットされます。

すべて折りたたむ

正規化された 3 dB の周波数 0.2π ラジアン/サンプルをもつ次数 6 のバタワース フィルターを設計します。grpdelay を使用して群遅延を表示します。

[z,p,k] = butter(6,0.2);
sos = zp2sos(z,p,k);

grpdelay(sos,128)

同じ Figure 内で、システムの群遅延と位相遅延をプロットします。

gd = grpdelay(sos,512);

[h,w] = freqz(sos,512);
pd = -unwrap(angle(h))./w;

plot(w/pi,gd,w/pi,pd)
grid
xlabel 'Normalized Frequency (\times\pi rad/sample)'
ylabel 'Group and phase delays'
legend('Group delay','Phase delay')

designfilt を使用して、正規化された 3 dB の周波数 0.2π ラジアン/サンプルをもつ 6 次のバタワース フィルターを設計します。その群遅延応答を表示します。

d = designfilt('lowpassiir','FilterOrder',6, ...
    'HalfPowerFrequency',0.2,'DesignMethod','butter');
grpdelay(d)

任意振幅応答の 88 次 FIR フィルターを設計します。フィルターには、2 つの通過帯域と 2 つの阻止帯域があります。低域周波数の通過帯域は、高周波数の通過帯域のゲインの 2 倍です。サンプル レート 200 Hz を指定します。10 Hz から 78 Hz までのフィルターの振幅応答と位相応答を可視化します。

fs = 200;
d = designfilt('arbmagfir', ...
       'FilterOrder',88, ...
       'NumBands',4, ...
       'BandFrequencies1',[0 20], ...
       'BandFrequencies2',[25 40], ...
       'BandFrequencies3',[45 65], ...
       'BandFrequencies4',[70 100], ...
       'BandAmplitudes1',[2 2], ...
       'BandAmplitudes2',[0 0], ...
       'BandAmplitudes3',[1 1], ...
       'BandAmplitudes4',[0 0], ...
       'SampleRate',fs);
freqz(d,10:1/fs:78,fs)

同じ周波数範囲上のフィルターの群遅延応答を計算して表示します。フィルター次数の 1/2 であることを確認します。

filtord(d)
ans = 88
grpdelay(d,10:1/fs:78,fs)

入力引数

すべて折りたたむ

伝達関数の係数。ベクトルで指定します。ba によるこの伝達関数式は次になります。

H(z)=B(z)A(z)=b1+b2z1+bnz(n1)+bn+1zna1+a2z1+amz(m1)+am+1zm

例: b = [1 3 3 1]/6a = [3 0 1 0]/3 は、正規化された 3 dB の周波数 0.5π ラジアン/サンプルをもつ 3 次のバタワース フィルターを指定します。

データ型: double | single
複素数のサポート: あり

評価点の数。2 以上の正の整数スカラーとして指定します。n がない場合の既定値は 512 です。最適な結果を得るため、n をフィルター次数よりも大きい値に設定します。

2 次セクションの係数。行列として指定します。sos は K 行 6 列の行列で、セクション数 K が 2 以上でなければなりません。セクション数が 2 未満の場合、関数は入力を分子ベクトルとして扱います。sos の各行は 2 次 (双二次) フィルターの係数に対応しています。sos の i 行目は [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)] に対応しています。

例: s = [2 4 2 6 0 2;3 3 0 6 0 0] は、正規化された 3 dB の周波数 0.5π ラジアン/サンプルをもつ 3 次のバタワース フィルターを指定します。

データ型: double | single
複素数のサポート: あり

デジタル フィルター。digitalFilter オブジェクトで指定します。デジタル フィルターを周波数応答仕様に基づいて生成するには、関数 designfilt を使用します。

例: d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5) は、正規化された 3 dB の周波数 0.5π ラジアン/サンプルをもつ 3 次のバタワース フィルターを指定します。

サンプル レート。正のスカラーで指定します。時間の単位が秒の場合、fs は Hz で表されます。

データ型: double

角周波数。ラジアン/サンプル単位のベクトルとして指定します。win は少なくとも 2 つの要素をもたなければなりません。そうでない場合は関数が n として解釈するためです。win = π はナイキスト周波数に相当します。

周波数。ベクトルとして指定します。fin は少なくとも 2 つの要素をもたなければなりません。そうでない場合は、関数が n として解釈するためです。時間の単位が秒の場合、fin は Hz で表されます。

データ型: double

出力引数

すべて折りたたむ

群遅延応答。ベクトルとして返されます。n を指定している場合は、gd の長さは n になります。n を指定していないか、n を空ベクトルとして指定している場合には、gd の長さは 512 になります。

grpdelay への入力が単精度の場合、関数によって、群遅延が単精度演算で計算されます。出力 h は単精度です。

ベクトルとして返される角周波数。w は 0 ~π の値を取ります。入力に "whole" を指定すると、w の値の範囲は 0 ~ 2π になります。n を指定している場合は、w の長さは n になります。n を指定していないか、n を空ベクトルとして指定している場合には、w の長さは 512 になります。

Hz 表記のベクトルとして返される周波数。f は 0 ~ fs/2 Hz の値を取ります。入力に "whole" を指定している場合、f の値の範囲は 0 ~ fs Hz になります。n を指定している場合は、f の長さは n になります。n を指定していないか、n を空ベクトルとして指定している場合には、f の長さは 512 になります。

詳細

すべて折りたたむ

群遅延

フィルターの "群遅延応答" とは、フィルターの平均の遅延を周波数の関数として表したものです。これは、フィルターの位相応答の 1 次導関数に負の符号を付けたものです。フィルターの周波数応答が H(e) の場合、群遅延は以下になります。

τg(ω)=dθ(ω)dω,

ここで、θ(ω) は位相、つまり H(e) の引数です。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入

すべて展開する