function zpk and linmod
    3 ビュー (過去 30 日間)
  
       古いコメントを表示
    
How are matrices A,B,C,D found?
How is the calculation done to find the transfer function gains?
Example:
X_trim =
        0.0156566822191464
        0.0795424262493709
          196.412468864823
          15.6561280499959
                         0
                     -3048
U_trim =
        -0.091567106993385
[A,B,C,D]=linmod(modelName,X_trim,U_trim)
  A = 
            x1       x2
   x1  -0.7302    195.5
   x2  -0.1373    -0.67
  B = 
           u1
   x1  -25.91
   x2   -36.5
  C = 
            x1       x2
   y1  -0.7302    195.5
   y2        0        1
  D = 
           u1
   y1  -25.91
   y2       0
      -25.905 s (s+276.1)
   az:  --------------------
        (s^2 + 1.4s + 27.32)
        -36.503 (s+0.6328)
   q:  --------------------
       (s^2 + 1.4s + 27.32)
0 件のコメント
回答 (2 件)
  Sam Chak
      
      
 2024 年 10 月 10 日
        Once you have the state-space, you can apply the zpk() function to obtain the TF in zpk mode.
A   = [-0.7302    195.5
       -0.1373   -0.67];
B   = [-25.91
       -36.5];
C   = [-0.7302    195.5
        0         1];
D   = [-25.91
        0];
sys = ss(A, B, C, D)
G   = zpk(sys)
  Aquatris
      
 2024 年 10 月 11 日
        Here explains how it is done. Basically you have your function that describes the relation between states and inputs. If they are nonlinear functions, you use Jacobian to linearize the relation at a particular operating point, depicted with x_trim and u_trim in your example. 
Once you have a state space representation, then you can convert it to a transfer function. From the transfer function, finding the zeros poles and gain are a simple mathematical manipulation to make the transfer function look like this

8 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!