ss2tf
状態空間表現から伝達関数への変換
説明
例
単位弾性定数のバネで壁につながれた単位質量 で構成される 1 次元の離散時間振動システムについて考えます。センサーによりこの質量の加速度 を Hz でサンプリングします。
50 個の時間サンプルを生成します。サンプリング間隔は と定義します。
Fs = 5; dt = 1/Fs; N = 50; t = dt*(0:N-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') xlabel('t')
伝達関数 H(z) で時間依存の加速度を計算して入力をフィルター処理します。結果をプロットします。
[b,a] = ss2tf(A,B,C,D); yt = filter(b,a,u); stem(t,yt,'filled') xlabel('t')
このシステムの伝達関数の解析式は次のようになります。
この式を使用して入力をフィルター処理します。応答をプロットします。
bf = [1 -(1+cos(dt)) cos(dt)]; af = [1 -2*cos(dt) 1]; yf = filter(bf,af,u); stem(t,yf,'filled') xlabel('t')
3 つのいずれでも結果は同じになります。
2 つの壁の間に拘束された 2 つの単位質量 および で構成される理想的な 1 次元の振動システムがあります。各質量は単位弾性定数のバネでそれぞれ近い方の壁につながれています。さらに、もう 1 つの同じバネで 2 つの質量がつながれています。センサーによりこれらの質量の加速度 および を Hz でサンプリングします。
総測定時間を 16 秒に指定します。サンプリング間隔は と定義します。
Fs = 16; dt = 1/Fs; N = 257; t = dt*(0:N-1);
このシステムは次の状態空間モデルで表すことができます。
ここで、 は状態ベクトルであり、 と はそれぞれ 番目の質量の位置と速度です。入力ベクトルは で出力ベクトルは です。状態空間行列は次のようになります。
連続時間状態空間行列は次のようになります。
は適切なサイズの単位行列を示します。
Ac = [0 1 0 0; -2 0 1 0; 0 0 0 1; 1 0 -2 0]; A = expm(Ac*dt); Bc = [0 0; 1 0; 0 0; 0 1]; B = Ac\(A-eye(4))*Bc; C = [-2 0 1 0; 1 0 -2 0]; D = eye(2);
1 つ目の質量 に正の方向の単位インパルスを与えます。
ux = [1 zeros(1,N-1)]; u0 = zeros(1,N); u = [ux;u0];
モデルを使用して、すべてゼロの初期状態からのシステムの時間発展を計算します。
x = [0 0 0 0]'; y = zeros(2,N); for k = 1:N y(:,k) = C*x + D*u(:,k); x = A*x + B*u(:,k); end
2 つの質量の加速度を時間の関数としてプロットします。
stem(t,y','.') xlabel('t') legend('a_1','a_2') title('Mass 1 Excited') grid
システムを伝達関数表現に変換します。1 つ目の質量に正の単位インパルスの励起を与えたときのシステムの応答を求めます。
[b1,a1] = ss2tf(A,B,C,D,1); y1u1 = filter(b1(1,:),a1,ux); y1u2 = filter(b1(2,:),a1,ux);
結果をプロットします。伝達関数から状態空間モデルと同じ応答が得られます。
stem(t,[y1u1;y1u2]','.') xlabel('t') legend('a_1','a_2') title('Mass 1 Excited') grid
システムを初期構成にリセットします。次に、もう 1 つの質量 に正の方向の単位インパルスを与えます。システムの時間発展を計算します。
u = [u0;ux]; x = [0;0;0;0]; for k = 1:N y(:,k) = C*x + D*u(:,k); x = A*x + B*u(:,k); end
加速度をプロットします。2 つの質量の応答が入れ替わります。
stem(t,y','.') xlabel('t') legend('a_1','a_2') title('Mass 2 Excited') grid
2 つ目の質量に正の単位インパルスの励起を与えたときのシステムの応答を求めます。
[b2,a2] = ss2tf(A,B,C,D,2); y2u1 = filter(b2(1,:),a2,ux); y2u2 = filter(b2(2,:),a2,ux);
結果をプロットします。伝達関数から状態空間モデルと同じ応答が得られます。
stem(t,[y2u1;y2u2]','.') xlabel('t') legend('a_1','a_2') title('Mass 2 Excited') grid
入力引数
状態行列。行列として指定します。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、A
は n 行 n 列になります。
データ型: single
| double
状態空間への入力行列。行列として指定します。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、B
は n 行 p 列になります。
データ型: single
| double
状態空間からの出力行列。行列として指定します。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、C
は q 行 n 列になります。
データ型: single
| double
直達行列。行列として指定します。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、D
は q 行 p 列になります。
データ型: single
| double
入力インデックス。整数値スカラーとして指定します。p 個の入力から成るシステムについて、ni
番目の入力に適用される単位インパルスに対する応答を計算するには、ss2tf
の最後に引数 ni
=1,…,p を指定します。
データ型: single
| double
出力引数
伝達関数の分子係数。ベクトルまたは行列として返されます。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、各入力に対する b
は q 行 (n+1) 列になります。係数は s または z の降べきの順に返されます。
伝達関数の分母係数。ベクトルとして返されます。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、各入力に対する a
は 1 行 (n+1) 列になります。係数は s または z の降べきの順に返されます。
詳細
離散時間システムの場合、状態空間行列では状態ベクトル x、入力 u、出力 y の関係が次のように表されます。
伝達関数はシステムのインパルス応答の Z 変換です。状態空間行列では次のように表すことができます。
連続時間システムの場合、状態空間行列では状態ベクトル x、入力 u、出力 y の関係が次のように表されます。
伝達関数はシステムのインパルス応答のラプラス変換です。状態空間行列では次のように表すことができます。
バージョン履歴
R2006a より前に導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)