Matlab:线性化Simulink模型并获得线性化传递函数?

时间:2013-11-29 13:18:21

标签: matlab function simulink transfer

我想确定Simulink中制作的非线性系统的线性化传递函数。我可以看到应该可以在Matlab中使用linmod函数,但是当我尝试这个时

[num,den]=linmod('sys')

我没有获得分子和分母,而是获得状态空间矩阵等。任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

尝试使用balred功能:documentation

  

rsys = balred(sys,ORDERS)计算降阶近似rsys   LTI模型sysrsys的所需顺序(状态数)是   由ORDERS指定。您可以通过设置一次尝试多个订单   ORDERS到整数向量,在这种情况下rsys是一个向量   降阶模型。 balred使用隐式平衡技术   计算降阶近似rsys

示例:

Q = tf([1 2 3 4 5],[5 4 3 2 1])

Q =

   s^4 + 2 s^3 + 3 s^2 + 4 s + 5
  -------------------------------
  5 s^4 + 4 s^3 + 3 s^2 + 2 s + 1

Q_lin = balred(Q,2)

Q_lin =

  3.276 s^2 - 2.06 s + 2.394
  --------------------------
   s^2 - 0.2757 s + 0.4789

balred(Q,1)

不能用于我的示例,因为有两个不稳定的极点,但它可能适用于您的系统。

答案 1 :(得分:2)

linmod始终返回状态空间表示(请参阅文档)。使用tf将您的stae-space表示转换为传递函数:

  

转换为传输功能

     

tfsys = tf(sys)转换动态   系统模型sys传递函数形式。输出tfsystf   表示sys的模型对象表示为传递函数。

顺便说一句,如果您有Simulink Control Design,linmod的更好替代方案是linearize