Main Content

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

ss2sos

状態空間パラメーターの 2 次セクション構造への変換

説明

[sos,g] = ss2sos(A,B,C,D) では、入力引数 ABC、および D によって表現される状態空間システムと等価なゲイン g をもつ、2 次セクション形式 sos が返されます。入力状態空間システムは、単出力かつ実数でなければなりません。

[sos,g] = ss2sos(A,B,C,D,iu) では、関数が状態空間システム ABCD のどの入力を変換に使用するかを示すインデックス iu が指定されます。

[sos,g] = ss2sos(A,B,C,D,order) では、sos の行の順序が order で指定されます。

[sos,g] = ss2sos(A,B,C,D,iu,order) では、インデックス uiorder の行の順序の両方が指定されます。

[sos,g] = ss2sos(A,B,C,D,iu,order,scale) では、すべての 2 次セクションのゲインと分子の係数に対し希望するスケーリングが行われます。

sos = ss2sos(___) では、最初のセクションにシステム ゲイン g 全体が組み込まれます。前の構文の入力を任意に組み合わせて指定できます。

すべて折りたたむ

0.2π ラジアン/サンプルのカットオフ周波数を指定し、出力を状態空間形式で表す 5 次バタワース ローパス フィルターを設計します。状態空間の結果を 2 次セクションに変換します。フィルターの周波数応答を可視化します。

[A,B,C,D] = butter(5,0.2);
sos = ss2sos(A,B,C,D)
sos = 3×6

    0.0013    0.0013         0    1.0000   -0.5095         0
    1.0000    1.9995    0.9995    1.0000   -1.0966    0.3554
    1.0000    2.0000    1.0000    1.0000   -1.3693    0.6926

freqz(sos)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

単位弾性定数のバネで壁につながれた単位質量 m で構成される 1 次元の離散時間振動システムについて考えます。センサーは、質量の加速度 a を測定します。

そのシステムは、Fs=5 Hz でサンプリングされます。50 個の時間サンプルを生成します。サンプリング間隔は Δt=1/Fs と定義します。

Fs = 5;
dt = 1/Fs;
N = 50;
t = dt*(0:N-1);

この振動子は次の状態空間方程式で表すことができます。

x(k+1)=Ax(k)+Bu(k),y(k)=Cx(k)+Du(k),

ここで、x=(rv)T は状態ベクトルであり、rv はそれぞれ質量の位置と速度です。行列は次のようになります。

A=(cosΔtsinΔt-sinΔtcosΔt),B=(1-cosΔtsinΔt),C=(-10),D=(1).

A = [cos(dt) sin(dt);-sin(dt) cos(dt)];
B = [1-cos(dt);sin(dt)];
C = [-1 0];
D = 1;

系に正の方向の単位インパルスを与えます。状態空間モデルを使用して、すべてゼロの初期状態からの系の時間発展を計算します。

u = [1 zeros(1,N-1)];

x = [0;0];
for k = 1:N
    y(k) = C*x + D*u(k);
    x = A*x + B*u(k);
end

質量の加速度を時間の関数としてプロットします。

stem(t,y,'filled')

Figure contains an axes object. The axes object contains an object of type stem.

伝達関数で時間依存の加速度を計算して入力をフィルター処理します。伝達関数を 2 次セクションとして表します。結果をプロットします。

sos = ss2sos(A,B,C,D);
yt = sosfilt(sos,u);
stem(t,yt,'filled')

Figure contains an axes object. The axes object contains an object of type stem.

どちらの場合も結果は同じになります。

入力引数

すべて折りたたむ

状態行列。行列として指定します。システムに p 個の入力と q 個の出力があり、n 個の状態変数により記述される場合、A は n 行 n 列のサイズになります。

状態空間への入力行列。行列として指定します。システムに p 個の入力と q 個の出力があり、n 個の状態変数により記述される場合、B は n 行 p 列のサイズになります。

状態空間への出力行列。行列として指定します。システムに p 個の入力と q 個の出力があり、n 個の状態変数により記述される場合、C は q 行 n 列のサイズになります。

直達行列。行列として指定します。システムに p 個の入力と q 個の出力があり、n 個の状態変数により記述される場合、D は q 行 p 列のサイズになります。

インデックス。整数として指定します。

sos の行の次数。次のいずれかの値として指定します。

  • 'down'sos の最初の行が単位円に最も近い極を含むようにセクションを並べます。

  • 'up'sos の最初の行が単位円から最も離れた極を含むようにセクションを並べます。

零点は最も近い極との組み合わせになります。

ゲインおよび分子係数のスケーリング。次のいずれかの値を指定します。

  • 'none' — スケーリングを適用しません。

  • 'inf' — 無限大ノルム スケーリングを適用します。

  • 'two' — 2 ノルム スケーリングを適用します。

up の順序で無限大ノルム スケーリングを使用すると、固定小数点での表現において、オーバーフローの可能性が最小になります。down の順序で 2 ノルム スケーリングを使用すると、ピークの丸めノイズが最小化されます。

メモ

無限大ノルムと 2 ノルムのスケーリングは、直接型 II の実装に対してのみ適切です。

出力引数

すべて折りたたむ

2 次セクション表現。行列として返されます。sos は、

sos=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L]

形式の L 行 6 列の行列であり、この行列の行には、以下で得られる H(z) の 2 次セクションの分子係数 bik と分母係数 aik が含まれます。

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

全体のシステム ゲイン。実数値スカラーとして返されます。

1 つの出力引数と共にこの関数を呼び出すと、ゲインが最初のセクション H1(z) に組み込まれます。したがって次のようになります。

H(z)=k=1LHk(z).

メモ

直接型 II 構造をスケーリングする際に、最初のセクションのゲインを組み込むことは推奨しません。異常なスケーリングになることがあります。ゲインの組み込みを避けるために、sosg の 2 つの出力をもつ関数を使用します。

アルゴリズム

関数 ss2sos では、この 4 つのステップのアルゴリズムを使用して、入力された状態空間システムの 2 次セクション構造が求められます。

  1. ABC、および D で与えられたシステムの極と零点を求めます。

  2. 関数 zp2sos を使用し、これはまず、関数 cplxpair により零点と極を複素共役対にまとめます。次に関数 zp2sos は、次のルールに従って極と零点の組を対応させ、2 次セクションを構成します。

    1. 単位円に最も近い極を、それらの極に最も近い零点と組み合わせます。

    2. 次に単位円に近い極を、それらの極に最も近い零点と組み合わせます。

    3. この手順を継続して、極と零点をすべて組み合わせます。

    関数 ss2sos では、実極についても、絶対値が最も近いものをグループ化してセクションにまとめます。実数零点についても同じルールが適用されます。

  3. 極の組み合わせを単位円に近付く順に並べ替えます。関数 ss2sos では通常、単位円に最も近い極をもつセクションがカスケードの最後に配置されます。ss2sos では、順序入力を 'down' に設定することで、セクションを逆の順序に並べるように指定できます。

  4. scale 入力によって指定されたノルムでセクションがスケーリングされます。任意の H(ω) に対するスケーリングは、以下のように定義されます。

    Hp=[12π02π|H(ω)|pdω]1/p

    ここで、p は、∞ または 2 のいずれかです。詳細については、参考文献を参照してください。このスケーリングは、固定小数点フィルターの実装によるオーバーフローまたはピークの丸めノイズを最小限に抑えようとする試みです。

参照

[1] Jackson, Leland B. Digital Filters and Signal Processing. Boston: Kluwer Academic Publishers, 1996.

[2] Mitra, Sanjit Kumar. Digital Signal Processing: A Computer-Based Approach. New York: McGraw-Hill, 1998.

[3] Vaidyanathan, P. P. “Robust Digital Filter Structures.” Handbook for Digital Signal Processing (S. K. Mitra and J. F. Kaiser, eds.). New York: John Wiley & Sons, 1993.

拡張機能

バージョン履歴

R2006a より前に導入