簡體   English   中英

了解 ss() 和 tf2ss() 函數及其區別

[英]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}); 

這里部分復制。 現在我希望dcm1dcm2是相同的,但這是我得到的:

>> 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它們都分別返回sstf表示中的連續系統。

ss2tf返回 A、B、C、D 矩陣,這些矩陣是將傳輸 function tf轉換為其狀態空間表示的結果。

但有一個警告,傳輸 function 的狀態空間表示不是唯一的。 似乎tf2ssssMatlab使用了兩種不同的算法。 您可以驗證兩個系統是否返回相同的轉賬 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM