在這個問題之后,我試圖理解 MATLABss()和tf2ss()函式的功能及其差異。考慮下面的代碼:
Kf = 0.2;
J = 0.02;
h2 = tf(1, [J Kf]);
dcm1 = ss(h2);
dcm2 = tf2ss(h2.Numerator{1}, h2.Denominator{1});
從這里部分復制。現在我希望dcm1anddcm2是相同的,但這是我得到的:
>> dcm1
dcm1 =
一個=
x1
x1 -10
乙 =
u1
x1 8
C =
x1
y1 6.25
D =
u1
y1 0
連續時間狀態空間模型。
>> dcm2
平方厘米 =
-10
如果您能幫助我理解為什么我會得到兩個不同的結果,我將不勝感激?如何使用該tf2ss()函式獲得相同的結果?換句話說,我想創建一個與該函式dcm2相同dcm1但使用該函式的tf2ss()函式。
uj5u.com熱心網友回復:
ss回傳一個 state-space system,類似于tf它們分別回傳連續系統ss和tf表示。
ss2tf回傳 A、B、C、D 矩陣,它們是將傳遞函式tf轉換為其狀態空間表示的結果。
但是有一個警告,傳遞函式的狀態空間表示不是唯一的。似乎對和Matlab使用了兩種不同的演算法。您可以驗證兩個系統是否回傳相同的傳遞函式:sstf2ss
Kf = 0.2;
J = 0.02;
h2 = tf(1, [J Kf]);
dcm1 = ss(h2);
[A, B, C, D] = tf2ss(h2.Numerator{1}, h2.Denominator{1});
dcm1 =
A =
x1
x1 -10
B =
u1
x1 8
C =
x1
y1 6.25
D =
u1
y1 0
[A B C D]
A = -10
B = 1
C = 50
D = 0
現在讓我們比較一下傳遞函式:
[b, a] = ss2tf(A, B, C, D)
% yields
b = [0 50]
a = [1 10]
[b, a] = ss2tf(dcm1.a, dcm1.b, dcm1.c, dcm1.d)
% yields
b = [0 50]
a = [1 10]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432377.html
