メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

isminphase

フィルターが最小位相であるかどうかを判別

説明

flag = isminphase(b,a) は、指定されたフィルターが最小位相の場合、1 に等しい logical 出力を返します。分子係数 b と分母係数 a をもつフィルターを指定します。

flag = isminphase(B,A,"ctf") は、分子係数 B と分母係数 A によってCascaded Transfer Functions (CTF) として指定されるフィルターが最小位相の場合、1 を返します。 (R2024b 以降)

flag = isminphase({B,A,g},"ctf") は、CTF 形式で指定されるフィルターが最小位相の場合、1 を返します。分子係数 B、分母係数 A、およびフィルター セクション全体のスケーリング値 g を使用してフィルターを指定します。 (R2024b 以降)

flag = isminphase(d) では、デジタル フィルター d が最小位相の場合、1 が返されます。d を周波数応答仕様に基づいて生成するには、関数 designfilt を使用します。

flag = isminphase(sos) では、2 次セクション行列 sos で指定されるフィルターが最小位相の場合、1 が返されます。

flag = isminphase(___,tol) は、許容誤差 tol を使用して、2 つの数が等しいと見なせる程度に近づく時点を判別します。

すべて折りたたむ

2 次セクションを使用して、6 次のローパス バタワース IIR フィルターを設計します。正規化された 3 dB の周波数、0.15 を指定します。フィルターが最小位相であるかどうかをチェックします。

[z,p,k] = butter(6,0.15);
SOS = zp2sos(z,p,k);            
min_flag = isminphase(SOS)
min_flag = logical
   1

designfilt を使用してフィルターを再設計します。伝達関数の零点と極が単位円の上かまたは内部にあるかをチェックします。

d = designfilt("lowpassiir",DesignMethod="butter",FilterOrder=6, ...
               HalfPowerFrequency=0.25);
d_flag = isminphase(d)
d_flag = logical
   1

zplane(d)

Figure contains an axes object. The axes object with title Pole-Zero Plot, xlabel Real Part, ylabel Imaginary Part contains 4 objects of type line, text. One or more of the lines displays its values using only markers

一連の単精度の分子係数と分母係数で定義されるフィルターが、さまざまな許容誤差の値に対して最小位相であるかどうかをチェックします。

b = single([1 1.00001]);  
a = single([1 0.45]);               
min_flag1 = isminphase(b,a)        
min_flag1 = logical
   0

min_flag2 = isminphase(b,a,1e-3)
min_flag2 = logical
   1

R2024b 以降

阻止帯域エッジ周波数が 0.4、阻止帯域の減衰量が 50 dB の 40 次ローパス チェビシェフ II 型デジタル フィルターを設計します。CTF 形式のフィルター係数を使用して、フィルターが最小位相であるかどうかを確認します。

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

flag = isminphase(B,A,"ctf")
flag = logical
   1

通過帯域エッジ周波数が 0.3 と 0.7、通過帯域リップルが 0.1 dB、阻止帯域の減衰量が 50 dB の 30 次バンドパス楕円デジタル フィルターを設計します。CTF 形式のフィルター係数とゲインを使用して、フィルターが最小位相であるかどうかを確認します。

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

入力引数

すべて折りたたむ

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

データ型: single | double

R2024b 以降

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

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

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

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

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

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

メモ

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

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

R2024b 以降

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

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

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

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

データ型: double | single

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

2 次セクション。k 行 6 列の行列として指定します。セクション数 k は 2 以上でなければなりません。sos の各行は 2 次 (双二次) フィルターの係数に対応しています。sos 行列の i 行目は [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)] に対応しています。

データ型: double

許容誤差。正のスカラーで指定します。許容誤差の値は、2 つの数が等しいと見なせる程度に近づく時点を判別します。

データ型: double

出力引数

すべて折りたたむ

logical 出力。1 または 0 として返されます。この関数は、入力が最小位相フィルターである場合、1 を返します。

詳細

すべて折りたたむ

ヒント

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

参照

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

バージョン履歴

R2013a で導入

すべて展開する