3

私が持っている状態空間行列から伝達関数を生成しようとしています。問題は、行列に数値ではなく変数があるため、Matlab で記号変数を使用する必要があることです。

だから私は始めました:

A =

[  -a0,    0,    0,    0,    0,    0,   a1]
[    0,  -a2,    0,    0,    0,    0,   a3]
[    0,    0,  -a4,    0,    0,    0,   a5]
[    0,    0,    0,  -a6,    0,    0,   a7]
[    0,    0,    0,    0,  -a8,    0,   a9]
[    0,    0,    0,    0,    0, -a10,  a11]
[  a12,  a13,  a14,  a15,  a16,  a17, -a18]

B =

[ b0, b1]
[  0, b2]
[  0, b3]
[  0, b4]
[  0, b5]
[  0, b6]
[  0,  0]

C = 

[ 0, 0, 0, 0, 0, 0, 1]

D = 0

次に、オンラインで方法を見つけました

Phi=inv(s*eye(7)-A)

ここで、ファイは転送マトリックスです。次に、

H = C * Phi * B + D

H が結果になるはずです。

ただし、MATLAB は 7 行 7 列の行列を処理できず、最終的に結果が切り捨てられます。

必要な伝達関数を達成するためのより良い方法はありますか?

4

2 に答える 2

4

マトリックス反転に関するウィキペディアの記事をご覧ください。行列 (Is-A) を考えると、非常に特殊な形をしており、その記事で与えられた恒等式のいくつかを使用して逆にすることができます。A は対角部分、B は右側の垂直ベクトル、C は下部の水平ベクトル、D はマトリックスの右下隅にある単一要素です。この方法で行う必要がある唯一の反転は、対角線で非常に簡単に反転できる反転 A と、C と B がそれぞれ行ベクトルと列ベクトルであるため、単一の数値である (DC*inv(A)*B) です。これは、手動またはシンボリック ツールボックスを使用して非常に簡単に実行できます。

于 2011-11-28T15:20:40.870 に答える
1

の次元と互換性を持たせるにはBDマトリックスを次のようにする必要があります。

D = [0 0];

たぶん、Hの切り捨てはこれによるものですか?

于 2011-11-18T13:38:28.777 に答える