登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

江南晚秋的小屋

欢迎讨论各类知识

 
 
 

日志

 
 
 
 

系统模型及其Matlab表示  

2007-04-27 10:09:14|  分类: 电气工程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

(四)、线性连续系统的Matlab描述
一般来说,线性连续系统
   通过拉氏变换可以写成如下传递函数的形式:
   , 且
将其进行一定的等价变换,可以得出线性连续系统的零极点模型:
  
其中zi为线性连续系统的零点,pi为系统的极点,K为系统的增益。
线性连续系统的另外一种模型为状态空间模型。前面已经提到,对于线性连续系统,使用其微分方程很容易推导出系统的状态空间模型。这里给出线性连续系统用状态空间模型进行描述的一般方式:

(1) 线性连续系统的传递函数模型描述。在Matlab中,传递函数表示为
num=[b0, b1,…,bm-1 ,bm]
den=[a0, a1,… ,an-1, an]
g=tf(num,den)
其中num表示传递函数的分子(Numerator)系数向量,den为分母(Denominator)系数向量。
注意,如果给定的分子或分母多项式缺项,则所缺项的系数用0补充。

(2) 线性连续系统的零极点模型描述。在Matlab中,零极点模型表示为
k=K
z=[z1, z2, …,zm]
p=[p1, p2,…,pn]
g=zpk(z,p,k)
其中k表示系统增益(gain),z表示系统零点(zeros),p表示系统极点(poles)。

(3) 线性连续系统的状态空间模型描述。如果系统的状态空间表示为

     则在Matlab中直接输入变换矩阵A,B,C,D,然后输入
sys=ss(A, B, C, D)
则建立了名为sys的状态空间模型。

技巧:如果分子或分母多项式是多个因子的乘积,则可以调用MATLAB提供的多项式乘法处理函数conv( )。

【例7】已知系统的传递函数为
试用MATLAB实现以上三种形式的系统模型。
>>num=[12,24,12,20]
>>den=[2,4,6,2,2]
>>g1=tf(num,den)     % 传递函数模型
运行结果为:
Transfer function:
   12 s^3 + 24 s^2 + 12 s + 20
-------------------------------
2 s^4 + 4 s^3 + 6 s^2 + 2 s + 2

>>g2=zpk(g1)      % 零极点模型
运行结果为:
Zero/pole/gain:
      6 (s+1.929) (s^2   + 0.07058s + 0.8638)
-------------------------------------------------
(s^2   + 0.08663s + 0.413) (s^2   + 1.913s + 2.421)

>>g3=ss(g1,'min')     % 状态空间模型
运行结果为:
a =
            x1       x2       x3       x4
    x1       -2    -0.75   -0.125   -0.125
    x2        4        0        0        0
    x3        0        2        0        0
    x4        0        0        1        0
b =
        u1
    x1    4
    x2    0
    x3    0
    x4    0
c =
            x1       x2       x3       x4
    y1      1.5     0.75   0.1875   0.3125
d =
        u1
    y1    0

【例8】已知系统的传递函数为
试用MATLAB实现此传递函数。
>>num=4*conv([1,2],conv([1,6,6],[1,6,6]));
>>den=conv([1,0],conv([1,1],conv([1,1],conv([1,1],[1,3,2,5]))));
>>g=tf(num,den)
程序中的conv( )表示两个多项式的乘法,并且可以嵌套。运行结果为:
Transfer function:
4 s^5 + 56 s^4 + 288 s^3 + 672 s^2 + 720 s + 288
------------------------------------------------------------------
s^7 + 6 s^6 + 14 s^5 + 21 s^4 + 24 s^3 + 17 s^2 + 5 s

(4) 结构图模型
对于传递函数表征的数学模型,其串联、并联合反馈结构可以通过以下操作来实现。设g1和g2是两个控制系统的传递函数,则有:
g=g1*g2   % g1与g2串联后的等效对象为g
g=g1±g2   % g1与g2并联后的等效对象为g
g=feedback(g1, g2, sign)  
表示前向通道传递函数为g1,反馈通道传递函数为g2,反馈连接下的等效传递函数为g。sign= -1或省略表示负反馈,sign=1或省略表示正反馈。
例:已知 , ,求 、 串联、并联后的传递函数。
先分别建立 、 的传递函数:
>>num1=[1,1];
>>den1=conv([1,0],[1,2]);
>>g1=tf(num1,den1);
>>num2=[1,0];
>>den2=[1,1,1];
>>g2=tf(num2,den2);
>>g=g1*g2      % 求 、 串联的传递函数
运行结果为
Transfer function:
          s^2 + s
-------------------------
s^4 + 3 s^3 + 3 s^2 + 2 s
>>g=g1+g2      % 求 、 并联的传递函数
运行结果为
Transfer function:
2 s^3 + 4 s^2 + 2 s + 1
-------------------------
s^4 + 3 s^3 + 3 s^2 + 2 s
>>g=feedback(g1,g2,-1)   % 求以 为前向通道、 为反馈通道,负反馈系统的传递函数
运行结果为
Transfer function:
   s^3 + 2 s^2 + 2 s + 1
-------------------------
s^4 + 3 s^3 + 4 s^2 + 3 s

(5) 模型的转换
一般来说,线性连续系统的不同模型之间可以相互转化,MATLAB中有内置的函数可以完成线性连续系统模型间的转化,这里仅列出这些函数原型:
[zeros, poles, k]=tf2zp(num, den);
[num, den]=zp2tf(zeros, poles, k);
[zeros, poles, k]=ss2zp(A, B, C, D);
[A, B, C, D]=zp2ss(zeros, poles, k)
[num, den]=ss2tf(A, B, C, D)
[A, B, C, D]=tf2ss(num, den)
  评论这张
 
阅读(309)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018