Main Content

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

sos

2 次セクションへの変換

説明

sosFilt = sos(sysobj) は、IIR 離散時間フィルターを 2 次セクション (SOS) フィルターへ変換します。出力 sosFiltdsp.SOSFilter System object™ です。

sosFilt = sos(sysobj,dir_flag) は、2 次セクションをセクションの極の原点に対する近さ順に並べ替えます。

すべて折りたたむ

IIR 離散時間フィルター オブジェクトを、対応する SOS セクションをもつ SOS フィルター オブジェクトに変換します。

関数 butter を使用して、10 次のローパス バタワース フィルターを設計します。

N = 10;
Fc = 0.4;
[b,a] = butter(N,Fc);

dsp.IIRFilter オブジェクトを作成し、設計した係数をオブジェクトの Numerator および Denominator プロパティに割り当てます。

iir = dsp.IIRFilter(Numerator=b,Denominator=a)
iir = 
  dsp.IIRFilter with properties:

            Structure: 'Direct form II transposed'
            Numerator: [4.9945e-04 0.0050 0.0225 0.0599 0.1049 0.1259 0.1049 0.0599 0.0225 0.0050 4.9945e-04]
          Denominator: [1 -1.9924 3.0195 -2.8185 2.0387 -1.0545 0.4144 -0.1157 0.0225 -0.0027 1.4876e-04]
    InitialConditions: 0

  Use get to show all properties

関数 sos を使用して、IIR フィルター オブジェクトを、対応する SOS セクションをもつ SOS フィルターに変換します。

sosFilt = sos(iir)
sosFilt = 
  dsp.SOSFilter with properties:

            Structure: 'Direct form II transposed'
    CoefficientSource: 'Property'
            Numerator: [5x3 double]
          Denominator: [5x3 double]
       HasScaleValues: true
          ScaleValues: [4.9945e-04 1 1 1 1 1]

  Use get to show all properties

SOS フィルター オブジェクトから SOS 行列とスケール値を取得できます。

sMatrix = [sosFilt.Numerator,sosFilt.Denominator]
sMatrix = 5×6

    1.0000    2.0958    1.0984    1.0000   -0.3187    0.0313
    1.0000    2.0576    1.0602    1.0000   -0.3345    0.0826
    1.0000    1.9981    1.0005    1.0000   -0.3695    0.1958
    1.0000    1.9412    0.9436    1.0000   -0.4317    0.3969
    1.0000    1.9073    0.9097    1.0000   -0.5380    0.7410

sValues = sosFilt.ScaleValues
sValues = 1×6

    0.0005    1.0000    1.0000    1.0000    1.0000    1.0000

これらの値を、関数tf2sosを使用して取得した値と比較し、値が同じであることを確認します。

[sMatrixfn,g] = tf2sos(b,a)
sMatrixfn = 5×6

    1.0000    2.0958    1.0984    1.0000   -0.3187    0.0313
    1.0000    2.0576    1.0602    1.0000   -0.3345    0.0826
    1.0000    1.9981    1.0005    1.0000   -0.3695    0.1958
    1.0000    1.9412    0.9436    1.0000   -0.4317    0.3969
    1.0000    1.9073    0.9097    1.0000   -0.5380    0.7410

g = 4.9945e-04
isequal(sMatrix,sMatrixfn)
ans = logical
   1

isequal(sValues(1),g)
ans = logical
   1

入力引数

すべて折りたたむ

IIR 離散時間フィルター オブジェクト。dsp.IIRFilter System object として指定します。

極の方向フラグ。以下のいずれかとして指定します。

  • 'up' –– 第 1 行には原点に最も近い極が含まれ、最後の行には単位円に最も近い極が含まれます。

  • 'down' –– セクションの順序は逆になります。零点は常に最も近い極との組み合わせになります。

出力引数

すべて折りたたむ

2 次セクション フィルター オブジェクト。dsp.SOSFilter System object として返されます。関数 sos は、入力の IIR フィルターの分子と分母の係数を SOS 行列およびスケール値に変換し、その値を dsp.SOSFilter オブジェクトに割り当てます。

バージョン履歴

R2011a で導入

すべて展開する

参考

関数

オブジェクト