このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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 つの壁の間に拘束された 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
入力引数
A
— 状態行列
行列
状態行列。行列として指定します。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、A
は n 行 n 列になります。
データ型: single
| double
B
— 状態空間への入力行列
行列
状態空間への入力行列。行列として指定します。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、B
は n 行 p 列になります。
データ型: single
| double
C
— 状態空間からの出力行列
行列
状態空間からの出力行列。行列として指定します。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、C
は q 行 n 列になります。
データ型: single
| double
D
— 直達行列
行列
直達行列。行列として指定します。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、D
は q 行 p 列になります。
データ型: single
| double
ni
— 入力インデックス
1 (既定値) | 整数値スカラー
入力インデックス。整数値スカラーとして指定します。p 個の入力から成るシステムについて、ni
番目の入力に適用される単位インパルスに対する応答を計算するには、ss2tf
の最後に引数 ni
=1,…,p を指定します。
データ型: single
| double
出力引数
b
— 伝達関数の分子係数
ベクトル | 行列
伝達関数の分子係数。ベクトルまたは行列として返されます。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、各入力に対する b
は q 行 (n+1) 列になります。係数は s または z の降べきの順に返されます。
a
— 伝達関数の分母係数
ベクトル
伝達関数の分母係数。ベクトルとして返されます。p 個の入力と q 個の出力から成るシステムが n 個の状態変数で表される場合、各入力に対する a
は 1 行 (n+1) 列になります。係数は s または z の降べきの順に返されます。
詳細
伝達関数
離散時間システムの場合、状態空間行列では状態ベクトル x、入力 u、出力 y の関係が次のように表されます。
伝達関数はシステムのインパルス応答の Z 変換です。状態空間行列では次のように表すことができます。
連続時間システムの場合、状態空間行列では状態ベクトル x、入力 u、出力 y の関係が次のように表されます。
伝達関数はシステムのインパルス応答のラプラス変換です。状態空間行列では次のように表すことができます。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)