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 contains an axes object. The axes object with title Group Delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (samples) contains an object of type line.

同じ 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')

Figure contains an axes object. The axes object with xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group and phase delays contains 2 objects of type line. These objects represent Group delay, Phase delay.

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

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

Figure Figure 1: Group delay contains an axes object. The axes object with title Group delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (in samples) contains an object of type line.

任意振幅応答の 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)

Figure Figure 1: Magnitude Response (dB) and Phase Response contains an axes object. The axes object with title Magnitude Response (dB) and Phase Response, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

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

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

Figure Figure 2: Group delay contains an axes object. The axes object with title Group delay, xlabel Frequency (Hz), ylabel Group delay (in samples) contains an object of type line.

入力引数

すべて折りたたむ

伝達関数の係数。ベクトルで指定します。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 より前に導入

すべて展開する