[英]Understanding the ss() and tf2ss() functions and their differences
在這個問題之后,我試圖理解 MATLAB 的ss()
和tf2ss()
函數的功能及其區別。 考慮下面的代碼:
Kf = 0.2;
J = 0.02;
h2 = tf(1, [J Kf]);
dcm1 = ss(h2);
dcm2 = tf2ss(h2.Numerator{1}, h2.Denominator{1});
從 這里部分復制。 現在我希望dcm1
和dcm2
是相同的,但這是我得到的:
>> dcm1 dcm1 = A = x1 x1 -10 B = u1 x1 8 C = x1 y1 6.25 D = u1 y1 0 Continuous-time state-space model. >> dcm2 dcm2 = -10
如果您能幫助我理解為什么我會得到兩個不同的結果,我將不勝感激? 我如何使用 tf2ss tf2ss()
function 獲得相同的結果? 換句話說,我想創建一個與dcm2
相同但使用dcm1
tf2ss()
function 的 dcm2。
ss
返回一個狀態空間system
,類似於tf
它們都分別返回ss
和tf
表示中的連續系統。
ss2tf
返回 A、B、C、D 矩陣,這些矩陣是將傳輸 function tf
轉換為其狀態空間表示的結果。
但有一個警告,傳輸 function 的狀態空間表示不是唯一的。 似乎tf2ss
對ss
和Matlab
使用了兩種不同的算法。 您可以驗證兩個系統是否返回相同的轉賬 function:
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
[甲、乙、C、丁]
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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.