Main Content

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

tf2ss

伝達関数フィルター パラメーターの状態空間形式への変換

説明

[A,B,C,D] = tf2ss(b,a) では、連続時間または離散時間の単入力伝達関数が等価な状態空間表現に変換されます。

すべて折りたたむ

次の伝達関数で記述されるシステムがあるとします。

H(s)=[2s+3s2+2s+1]s2+0.4s+1.

tf2ss を使用して、これを状態空間に変換します。

b = [0 2 3; 1 2 1];
a = [1 0.4 1];
[A,B,C,D] = tf2ss(b,a)
A = 2×2

   -0.4000   -1.0000
    1.0000         0

B = 2×1

     1
     0

C = 2×2

    2.0000    3.0000
    1.6000         0

D = 2×1

     0
     1

単位弾性定数のバネで壁につながれた単位質量 m で構成される 1 次元の離散時間振動システムについて考えます。センサーによりこの質量の加速度 aFs=5 Hz でサンプリングします。

50 個の時間サンプルを生成します。サンプリング間隔は Δt=1/Fs と定義します。

Fs = 5;
dt = 1/Fs;
N = 50;
t = dt*(0:N-1);
u = [1 zeros(1,N-1)];

このシステムの伝達関数の解析式は次のようになります。

H(z)=1-z-1(1+cosΔt)+z-2cosΔt1-2z-1cosΔt+z-2.

系に正の方向の単位インパルスを与えます。伝達関数を使用してシステムの時間発展を計算します。応答をプロットします。

bf = [1 -(1+cos(dt)) cos(dt)];
af = [1 -2*cos(dt) 1];
yf = filter(bf,af,u);

stem(t,yf,'o')
xlabel('t')

Figure contains an axes object. The axes object with xlabel t contains an object of type stem.

このシステムの状態空間表現を求めます。すべてゼロの初期状態からの時間発展を計算します。それを伝達関数予測と比較します。

[A,B,C,D] = tf2ss(bf,af);

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

hold on
stem(t,y,'*')
hold off
legend('tf','ss')

Figure contains an axes object. The axes object with xlabel t contains 2 objects of type stem. These objects represent tf, ss.

入力引数

すべて折りたたむ

伝達関数の分子係数。ベクトルまたは行列として指定します。b が行列の場合、b の各行はシステムの出力に対応します。

  • 離散時間システムの場合、b には、z の降べきの順で係数が含まれます。

  • 連続時間システムの場合、b には、s の降べきの順で係数が含まれます。

離散時間システムでは、b の列数と a の長さは等しくなければなりません。数が異なる場合は、ゼロをパディングすることで等しくします。これを実行するには、関数 eqtflength を使用します。

伝達関数分の分母係数。ベクトルとして指定します。

  • 離散時間システムの場合、a には、z の降べきの順で係数が含まれます。

  • 連続時間システムの場合、a には、s の降べきの順で係数が含まれます。

出力引数

すべて折りたたむ

状態行列。行列として返される。システムが n 個の状態変数により記述される場合、A は n 行 n 列になります。

データ型: single | double

状態への入力行列。行列として返される。システムが n 個の状態変数により記述される場合、B は n 行 1 列になります。

データ型: single | double

出力への状態行列。行列として返される。システムに q 個の出力があり、n 個の状態変数により記述される場合、C は q 行 n 列になります。

データ型: single | double

行列として返される直達行列。システムに q 個の出力がある場合、D は q 行 1 列になります。

データ型: single | double

詳細

すべて折りたたむ

伝達関数

tf2ss では、伝達関数表現で与えられたシステムのパラメーターが等価な状態空間表現に変換されます。

  • 離散時間システムの場合、状態空間の行列は状態ベクトル x、入力 u および出力 y を以下の式により表します。

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

    伝達関数は、システムのインパルス応答の Z 変換です。状態空間行列に対しては、以下のように表すことができます。

    H(z)=C(zIA)1B+D.

  • 連続時間システムの場合、状態空間の行列は状態ベクトル x、入力 u および出力 y を以下の式により表します。

    x˙=Ax+Bu,y=Cx+Du.

    伝達関数は、システムのインパルス応答のラプラス変換です。状態空間行列に対しては、以下のように表すことができます。

    H(s)=B(s)A(s)=b1sn1++bn1s+bna1sm1++am1s+am=C(sIA)1B+D.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入