ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

isminphase

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

構文

flag = isminphase(b,a)
flag = isminphase(sos)
flag = isminphase(d)
flag = isminphase(...,tol)
flag = isminphase(h)

説明

伝達関数のゼロ点がすべて単位円上または単位円内にあるか、分子がスカラーの場合、フィルターは "最小位相" です。最小位相フィルター相当とする定義は、因果的で安定な逆数をもつ因果的で安定なシステムです。

flag = isminphase(b,a) では、logical の出力 flag が返されます。これは分子係数 b と分母係数 a で指定されるフィルターが最小位相フィルターの場合、true になります。

flag = isminphase(sos) では、2 次セクション型行列 sos で指定されるフィルターが最小位相の場合、true が返されます。sos は K 行 6 列の行列です。ここで、セクション数 K は 2 以上でなければなりません。sos の各行は 2 次 (双二次) フィルターの係数に対応しています。sos 行列の i 行目は [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)] に対応しています。

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

flag = isminphase(...,tol) では、許容誤差 tol を使用して、2 つの数が等しいと見なせる程度に近づく時点が判別されます。tol を指定しない場合は、既定値の eps^(2/3) が使用されます。

 固定小数点演算の詳細

flag = isminphase(h) では、dfilt フィルター オブジェクト h が最小位相であるかどうかが判別されます。

すべて折りたたむ

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)

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

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

R2013a で導入