メインコンテンツ

ismaxphase

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

    説明

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

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

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

    flag = ismaxphase(d) は、デジタル フィルター d が最大位相の場合、1 を返します。

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

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

    すべて折りたたむ

    最大位相および最小位相ラティス フィルターを設計し、それらの位相のタイプを検証します。

    k = [1/6 1/1.4];
    bmax = latc2tf(k,"max");
    bmin = latc2tf(k,"min");
    max_flag = ismaxphase(bmax)
    max_flag = logical
       1
    
    
    min_flag = isminphase(bmin)
    min_flag = logical
       1
    
    

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

    b = single([1 -0.9999]);
    a = single([1 0.45]);
    max_flag1 = ismaxphase(b,a)
    max_flag1 = logical
       0
    
    
    max_flag2 = ismaxphase(b,a,1e-3)
    max_flag2 = logical
       1
    
    

    R2024b 以降

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

    [B,A] = cheby2(40,50,0.4,"ctf");
    
    flag = ismaxphase(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 = ismaxphase({B,A,g},"ctf")
    flag = logical
       1
    
    

    入力引数

    すべて折りたたむ

    伝達関数の係数。ベクトルとして指定します。ba の値は、それぞれ分子多項式と分母多項式の係数を表します。

    例: [b,a] = cheby2(5,30,0.7) は、係数 ba をもつ 5 次のデジタル バタワース ローパス フィルターを作成します。このフィルターは、正規化された 3 dB 周波数が 0.7π ラジアン/サンプルで、阻止帯域の減衰量が 30 dB です。

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

    R2024b 以降

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

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

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

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

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

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

    メモ

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

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

    R2024b 以降

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

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

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

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

    データ型: double | single

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

    例: designfilt("lowpassfir",FilterOrder=10,CutoffFrequency=0.55) は、正規化された 3 dB 周波数が 0.55π rad/サンプルの 10 次 FIR ローパス フィルターの digitalFilter オブジェクトを生成します。

    データ型: digitalFilter

    2 次セクション表現。L 行 6 列の行列として指定します。ここで、L は 2 次セクションの数です。行列

    sos=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L]

    は、次に示す H(z) の 2 次セクションを表します。

    H(z)=k=1LHk(z)=k=1Lb0k+b1kz1+b2kz21+a1kz1+a2kz2.

    例: [z,p,k] = butter(3,1/32); sos = zp2sos(z,p,k) は、正規化された 3 dB の周波数 π/32 ラジアン/サンプルをもつ 3 次のバタワース フィルターを指定します。

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

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

    データ型: single | double

    出力引数

    すべて折りたたむ

    最大位相フラグ。logical スカラーとして返されます。この関数は、入力が最大位相フィルターである場合、1 を返します。

    詳細

    すべて折りたたむ

    ヒント

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

    参照

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

    バージョン履歴

    R2013a で導入

    すべて展開する