2016-03-04 50 views
0

在這裏,我nonsqaure MIMO系統中的「G」具有3個輸入和輸出7:如何使用Matlab獲取非正方形mimo系統的逆函數?

A = [-6.932e-2,17.41,-36.75,0,0,0,-6.0660,-31.54,0; 
    -1.435e-4,2.719e-2,-1.411e-3,3.467e-1,0,-9.380e-1,7.139e-2,-1.691e-2,0; 
    -4.537e-4,1.870e-3,-2.025e-1,0,1,0,-4.688e-2,7.563e-3,0; 
    -1.304e-4,-7.179,-4.916e-1,-6.172e-1,-3.689e-2,7.631e-1,0,0,0; 
    2.297e-5,0,-8.667e-1,4.393e-2,-1.947e-1,-2.026e-2,0,0,0; 
    1.964e-5,4.263e-2,-1.329e-2,1.233e-3,1.579e-2,-1.600e-1,0,0,0; 
    0,0,0,1,1.941e-1,2.771e-1,0,6.258e-2,0; 
    0,0,0,0,8.192e-1,-5.736e-1,-5.612e-2,0,0; 
    0,0,0,0,6.055e-1,8.648e-1,0,2.006e-2,0] 


B = [0,0,-7.560,9.067e-4; 
    -6.952e-3,1.293e-2,0,0; 
    0,0,-3.425e-2,-9.577e-7; 
    4.249,5.989e-1,0,0; 
    0,0,-1.796,0; 
    -7.287e-2,-2.877e-1,0,0; 
    0,0,0,0; 
    0,0,0,0; 
    0,0,0,0] 


C = [0,-5.758e-1,0,0,0,0,0,0,0; 
    0,0,0,1,0,0,0,0,0; 
    0,0,0,0,0,1,0,0,0; 
    0,0,1,0,0,0,0,0,0; 
    0,1,0,0,0,0,0,0,0; 
    0,0,0,0,1,0,0,0,0; 
    0,2.719e-2,-1.411e-3,3.467e-1,0,-9.380e-1,7.139e-2,0,0] 


D = [-1.298e-1,-1.610e-1,0,0; 
    0,0,0,0; 
    0,0,0,0; 
    0,0,0,0; 
    0,0,0,0; 
    0,0,0,0; 
    -6.952e-3,1.293e-2,0,0] 

Gss = ss(A,B,C,D) 
G = tf(Gss) 

我試着用pinv(G)得到G的倒數,但我得到這個錯誤:

Undefined function 'svd' for input arguments of type 'tf'. 

Error in pinv (line 18) 
[U,S,V] = svd(A,'econ'); 

我也一直在努力,G'*inv(G*G')但結果卻是:

*GT*invGGT 
    ans = 

     From input 1 to output... 
     1: NaN 

     2: NaN 

     3: NaN 

     4: NaN 

     From input 2 to output... 

...
靜態g^ain。*

我怎樣才能得到inv(G)

回答

0

您確定要使用僞逆系統嗎?是否用於系統識別? pinv命令僅適用於矩陣,不適用於傳遞函數。

我認爲這很明顯,inv(G)是完全不可能的。如果輸入數量不等於輸出數量,您希望如何獲得反函數?

現在你的問題:顯然,你有7個輸出,並希望找到最適合它的最小平方解決方案。我認爲這在數學上非常困難,因爲沒有給出狀態空間系統的可觀測性。 (儘量減少狀態的數目,但即使如此,d矩陣會引起問題。)該命令

rank(obsv(Gss)) 

提供8和系統具有9點的狀態。基本上,這意味着你不能觀察所有的狀態,因此你不能推斷出狀態的輸入。

備註:如果您想證明可觀察性(用於科學研究),請使用文法。 Obsv有時會遇到一些數值問題。