メインコンテンツ

phasedelay

デジタル フィルターの位相遅延

説明

[phi,w] = phasedelay(b,a,n) は、指定されたデジタル フィルターの位相遅延応答を返します。分子係数 b と分母係数 a をもつデジタル フィルターを指定します。この関数は、n 点位相遅延応答ベクトルを phi で返し、対応する角周波数ベクトルを w で返します。

[phi,w] = phasedelay(B,A,"ctf",n) は、分子係数 B と分母係数 A をもつCascaded Transfer Functions (CTF) として表されるデジタル フィルターの n 点位相遅延応答を返します。 (R2024b 以降)

[phi,w] = phasedelay({B,A,g},"ctf",n) は、デジタル フィルターの n 点位相遅延応答を CTF 形式で返します。分子係数 B、分母係数 A、およびフィルター セクション全体のスケーリング値 g を使用してフィルターを指定します。 (R2024b 以降)

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

[phi,w] = phasedelay(sos,n) では、2 次セクション sos に対応する n 点の位相遅延応答が返されます。

[phi,w] = phasedelay(___,n,"whole") は、単位円全体を n 個の等間隔で分割した位置の位相遅延応答を返します。

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

[phi,f] = phasedelay(___,n,"whole",fs) は、0 から fs の範囲の n 個の点における周波数ベクトル f を返します。

phi = phasedelay(___,w) では、w で指定した角周波数で評価された位相遅延応答が返されます。

phi = phasedelay(___,f,fs) では、f で指定した周波数で評価された位相遅延応答が返されます。

[phi,w,s] = phasedelay(___) では、プロット情報が返されます。ここで、s は、さまざまな周波数応答プロットを表示するために変更可能なフィールドを含む構造です。

[phi,f,s] = phasedelay(___) では、プロット情報が返されます。ここで、s は、さまざまな周波数応答プロットを表示するために変更可能なフィールドを含む構造です。

phasedelay(___) を使用すると、位相遅延応答と周波数が対比のためにプロットされます。

すべて折りたたむ

制約付き最小二乗を使用して、正規化されたカットオフ周波数 0.3 をもつ次数 54 のローパス FIR フィルターを設計します。通過帯域リップルに 0.02 線形単位、阻止帯域の減衰量に 0.08 線形単位を指定します。フィルターの位相遅延応答を計算してプロットします。

Ap = 0.02;
As = 0.008;

b = fircls1(54,0.3,Ap,As);
phasedelay(b)

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

この例を、designfilt を使用して再実行します。この関数ではリップルが dB 単位で表されることに注意してください。

Apd = 40*log10((1+Ap)/(1-Ap));
Asd = -20*log10(As);

d = designfilt('lowpassfir','FilterOrder',54,'CutoffFrequency',0.3, ...
               'PassbandRipple',Apd,'StopbandAttenuation',Asd);
phasedelay(d)

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

R2024b 以降

阻止帯域エッジ周波数が 0.4、阻止帯域の減衰量が 50 dB の 40 次ローパス チェビシェフ II 型デジタル フィルターを設計します。CTF 形式の係数を使用して、フィルターの位相遅延応答をプロットします。

[B,A] = cheby2(40,50,0.4,"ctf");

phasedelay(B,A,"ctf")

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

通過帯域エッジ周波数が 0.3 と 0.7、通過帯域リップルが 0.1 dB、阻止帯域の減衰量が 50 dB の 30 次バンドパス楕円デジタル フィルターを設計します。CTF 形式の係数とゲインを使用して、フィルターの位相遅延応答をプロットします。

[B,A,g] = ellip(30,0.1,50,[0.3 0.7],"ctf");
phasedelay({B,A,g},"ctf")

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

200 Hz のカットオフ周波数で 3 次ローパス バタワース フィルターを設計します。サンプル レートは 1000 Hz です。

fc = 200;
fs = 1000;

[z,p,k] = butter(3,fc/(fs/2),'low');

関数 zp2sos を使用して、零点、極およびゲインを 2 次セクションに変換します。フィルターの位相遅延応答を計算し、評価点の数を 1024 に設定します。結果を表示します。

sos = zp2sos(z,p,k);
phasedelay(sos,1024)

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

正規化された通過帯域周波数 0.4 をもつ次数 10 の楕円フィルターを設計します。0.5 dB の通過帯域リップルと 20 dB の阻止帯域の減衰量を指定します。単位円全体にわたるフィルターの位相遅延応答を表示します。

[b,a] = ellip(10,0.5,20,0.4); 
phasedelay(b,a,512,'whole')

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

この例を、designfilt を使用して再実行します。

d = designfilt('lowpassiir','DesignMethod','ellip','FilterOrder',10, ...
               'PassbandFrequency',0.4, ...
               'PassbandRipple',0.5,'StopbandAttenuation',20);
phasedelay(d,512,'whole')

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

入力引数

すべて折りたたむ

伝達関数の係数。ベクトルで指定します。

データ型: single | double

応答を求める周波数点の数。正の整数として指定します。n をフィルター次数よりも大きい値に設定します。

データ型: single | double

R2024b 以降

カスケード伝達関数 (CTF) 係数。スカラー、ベクトル、または行列として指定します。BA は、それぞれカスケード伝達関数の分子係数と分母係数をリストします。

B のサイズは L 行 (m + 1) 列、A のサイズは L 行 (n + 1) でなければなりません。ここで、

  • L はフィルター セクションの数を表します。

  • m はフィルターの分子の次数を表します。

  • n はフィルターの分母の次数を表します。

カスケード伝達関数の形式と係数行列の詳細については、CTF 形式によるデジタル フィルターの指定を参照してください。

メモ

A(:,1) のいずれかの要素が 1 と等しくない場合、phasedelay はフィルター係数を A(:,1) で正規化します。この場合、A(:,1) はゼロ以外でなければなりません。

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

R2024b 以降

スケール値。実数値のスカラー、または L + 1 個の要素をもつ実数値のベクトルとして指定します。ここで、L は CTF セクションの数です。スケール値は、カスケード フィルター表現のセクション全体にわたるフィルター ゲインの分布を表します。

phasedelay 関数は、g の指定方法に応じて、scaleFilterSections 関数を使用してフィルター セクションにゲインを適用します。

  • スカラー — この関数は、すべてのフィルター セクションにわたってゲインを均一に配分します。

  • ベクトル — この関数は、最初の L 個のゲイン値を対応するフィルター セクションに適用し、最後のゲイン値をすべてのフィルター セクションに均一に配分します。

データ型: double | single

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

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

データ型: single | double

関数が位相遅延応答を評価する角周波数。ラジアン/サンプル単位のベクトルとして指定します。周波数は通常、0 から π までです。w は少なくとも 2 つの要素をもたなければなりません。

サンプル レート。ヘルツ単位の実数値スカラーとして指定します。

データ型: double

関数が位相遅延応答を評価する周波数。ヘルツ単位のベクトルとして指定します。f には少なくとも 2 つの要素が含まれていなければなりません。

出力引数

すべて折りたたむ

位相遅延応答。長さ n のベクトルとして返されます。位相遅延応答は、単位円の上半分の周囲に等間隔に配置された n 個の点で計算されます。

メモ

phasedelay への入力が単精度の場合、この関数は位相遅延応答を単精度演算で計算します。出力 phi は単精度です。

ラジアン/サンプル単位の角周波数。ベクトルとして返されます。n を指定している場合は、w の長さは n になります。n を指定していないか、n を空ベクトルとして指定している場合、w の長さは 512 になります。

ヘルツ単位の周波数。ベクトルとして返されます。n を指定している場合は、f の長さは n になります。n を指定していないか、n を空ベクトルとして指定している場合、f の長さは 512 になります。

プロット情報。構造体として返されます。s のフィールドを変更してさまざまな周波数応答プロットを表示できます。

詳細

すべて折りたたむ

ヒント

  • スケーリング ゲインを含むフィルターを CTF 形式で取得できます。buttercheby1cheby2ellip などのデジタル IIR フィルター設計関数の出力を使用します。これらの関数で、"ctf" フィルタータイプ引数を指定し、スケール値を取得するために BAg を返すように指定します。 (R2024b 以降)

アルゴリズム

フィルターの "位相遅延応答" は、入力信号がシステムを通過する際に各周波数成分に生じる時間遅延に対応します。関数 phasedelay では、入力 b および a の分子係数と分母係数を指定した場合、フィルターの位相遅延応答と周波数ベクトルが返されます。

H(ejω)=B(ejω)A(ejω)=b(1)+b(2)ejω++b(m+1)ejmωa(1)+a(2)ejω++a(n+1)ejnω

参照

[1] Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.

バージョン履歴

R2006a より前に導入

すべて展開する