Main Content

isstable

フィルターが安定であるかどうかの判定

説明

flag = isstable(b,a) では、分子係数 b と分母係数 a で指定されるフィルターが安定している場合、1 に等しい logical 出力が返されます。

flag = isstable(sos) では、2 次セクション行列 sos で指定されるフィルターが安定している場合、1 が返されます。

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

すべて折りたたむ

2 次セクションを使用して、6 次のバタワース ハイパス IIR フィルターを設計します。正規化された 3 dB の周波数、0.7 を指定します。フィルターが安定しているかどうかを判別します。

[z,p,k] = butter(6,0.7,"high");
SOS = zp2sos(z,p,k);    
flag = isstable(SOS)        
flag = logical
   1

zplane(z,p)

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

designfilt を使用してフィルターを再設計し、その安定性をチェックします。

d = designfilt("highpassiir",DesignMethod="butter",FilterOrder=6, ...
               HalfPowerFrequency=0.7);
dflg = isstable(d)
dflg = logical
   1

zplane(d)

Figure Figure 1: Pole-Zero Plot 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 = [1 -0.5];
a = [1 -0.999999999];
act_flag1 = isstable(b,a)
act_flag1 = logical
   1

act_flag2 = isstable(single(b),single(a))
act_flag2 = logical
   0

入力引数

すべて折りたたむ

フィルター係数。ベクトルとして指定します。

データ型: single | double

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

データ型: double

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

出力引数

すべて折りたたむ

logical 出力。1 または 0 として返されます。極が円上またはその外側にある場合、この関数では 0 が返されます。極が円の内側にある場合、この関数では 1 が返されます。

データ型: logical

拡張機能

バージョン履歴

R2013a で導入