メインコンテンツ

zerophase

デジタル フィルターのゼロ位相応答

説明

[Hr,w] = zerophase(b,a) は、指定されたデジタル フィルターのゼロ位相応答を返します。分子係数 b と分母係数 a をもつデジタル フィルターを指定します。この関数は、単位円の上半分に等間隔で配置された 512 個の点のゼロ位相応答を求め、ゼロ位相応答 Hr および対応する角周波数 w を返します。

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

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

[Hr,w] = zerophase(d) では、デジタル フィルター d のゼロ位相応答が返されます。d を周波数応答仕様に基づいて生成するには、関数 designfilt を使用します。

[Hr,w] = zerophase(sos) では、2 次セクション行列 sos のゼロ位相応答が返されます。

[Hr,w] = zerophase(___,nfft) は、単位円の上半分の nfft 個の周波数点を使用して、ゼロ位相応答を計算します。前の構文の入力を任意に組み合わせて使用できます。

[Hr,w] = zerophase(___,nfft,"whole") は、全体の単位円の nfft 個の周波数点を使用して、ゼロ位相応答を計算します。

[Hr,f] = zerophase(___,fs) は、サンプル レート fs を使用して、ゼロ位相応答が計算された周波数 f を決定します。

[Hr,f] = zerophase(___,"whole",fs) は、サンプル レート fs を使用して、ゼロ位相応答が計算された単位円全体の周波数 f を決定します。

Hr = zerophase(___,w) では、w で指定した角周波数で評価されたゼロ位相応答 Hr が返されます。

Hr = zerophase(___,f,fs) では、f で指定した周波数で評価されたゼロ位相応答 Hr が返されます。

[Hr,w,phi] = zerophase(___) では、ゼロ位相応答 Hr、角周波数 w、連続位相成分 phi が返されます。

zerophase(___) では、周波数に対するゼロ位相応答がプロットされます。フィルター係数または 2 次セクション行列を入力した場合、この関数は現在の Figure ウィンドウでプロットを行います。

メモ

zerophase への入力が単精度の場合、この関数はゼロ位相応答を単精度演算で計算します。出力 Hr は単精度です。

すべて折りたたむ

designfilt を使用し、正規化されたカットオフ周波数が 0.3π ラジアン/サンプル、通過帯域リップルが 0.7 dB、阻止帯域の減衰量が 42 dB の 54 次 FIR フィルターを設計します。制約付き最小二乗法を使用します。そのゼロ位相応答を表示します。

Nf = 54;
Fc = 0.3;
Ap = 0.7;
As = 42;

d = designfilt("lowpassfir",FilterOrder=Nf,CutoffFrequency=Fc, ...
    PassbandRipple=Ap,StopbandAttenuation=As,DesignMethod="cls");
zerophase(d)

Figure contains an axes object. The axes object with title Zero-Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Amplitude contains an object of type line.

同じフィルターを、リップルと減衰量を線形単位で測定する fircls1 を使用して設計します。そのゼロ位相応答を表示します。

pAp = 10^(Ap/40); 
Apl = (pAp-1)/(pAp+1);
pAs = 10^(As/20);
Asl = 1/pAs;

b = fircls1(Nf,Fc,Apl,Asl);
zerophase(b)

Figure contains an axes object. The axes object with title Zero-Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Amplitude contains an object of type line.

正規化された通過帯域周波数が 0.4π ラジアン/サンプル、通過帯域リップルが 0.5 dB、阻止帯域の減衰量が 20 dB の 10 次の楕円ローパス IIR フィルターを設計します。単位円全体を 512 個に分割する周波数点におけるフィルターのゼロ位相応答を表示します。

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

Figure contains an axes object. The axes object with title Zero-Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Amplitude contains an object of type line.

ellip を使用して同じフィルターを作成します。そのゼロ位相応答をプロットします。

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

Figure contains an axes object. The axes object with title Zero-Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Amplitude contains an object of type line.

R2024b 以降

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

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

zerophase(B,A,"ctf")

Figure contains an axes object. The axes object with title Zero-Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Amplitude 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");
zerophase({B,A,g},"ctf")

Figure contains an axes object. The axes object with title Zero-Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Amplitude contains an object of type line.

入力引数

すべて折りたたむ

伝達関数の係数。ベクトルで指定します。a=1 の FIR フィルターの場合、このコマンドの a の値を省略できます。

データ型: single | double

R2024b 以降

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

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

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

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

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

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

メモ

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

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

R2024b 以降

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

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

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

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

データ型: double | single

デジタル フィルター。digitalFilter オブジェクトで指定します。

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

データ型: single | double

ゼロ位相応答を求めるのに使用される周波数点の数。正の整数スカラーとして指定します。最適な結果を得るため、nfft をフィルター次数よりも大きい値に設定します。

データ型: double

ゼロ位相応答が計算される角周波数。ベクトルとして指定し、ラジアン/サンプル単位で表されます。w には少なくとも 2 つの要素がなくてはなりません。

データ型: double

ゼロ位相応答が計算される周波数。ベクトルとして指定し、Hz 単位で表されます。f には少なくとも 2 つの要素がなくてはなりません。

データ型: double

サンプル レート。正のスカラーで指定します。

データ型: double

出力引数

すべて折りたたむ

ゼロ位相応答。ベクトルとして返されます。

ゼロ位相応答 Hr(ω) は周波数応答 H(e) と次の関係があります。

H(ejω)=Hr(ω)ejφ(ω),

ここで、φ(ω) は連続位相です。

メモ

ゼロ位相応答は常に実数になりますが、振幅応答と同じではありません。ゼロ位相応答が負になることはありますが、ゲイン応答が負になることはありません。

ゼロ位相応答が計算される角周波数。ベクトルとして返されます。

ゼロ位相応答が計算される周波数。ベクトルとして返されます。

連続位相成分。ベクトルとして返されます。ゼロ位相応答が負の場合、この値はフィルターの位相応答と等しくなりません。

詳細

すべて折りたたむ

ヒント

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

参照

[1] Antoniou, Andreas. Digital Filters. New York: McGraw-Hill, Inc., 1993.

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

バージョン履歴

R2006a より前に導入

すべて展開する