本文主要介绍如何利用MATLAB编程实现系统传递函数的构建以及它们之间进行串联、并联、反馈时的构建方法
一、传递函数的构建方法
首先 ,我们把想要构建的传递函数分子和分母的系数按照阶次从高到低(缺项补零)分别保存在一个向量中,然后调用tf()函数进行构建,tf函数用来建立实部或复数传递函数模型或将状态方程、或零级增益模型转化成传递函数形式。比如构建如下传递函数的代码如下:
1 s 3 + 2 s 2 + s frac{1}{s^3+2s^2+s} s3+2s2+s1
1
2
3
4num=[1]; den=[1 2 1 0]; G=tf(num,den)
运行结果如下:
1
2
3
4
5
6G = 1 --------------- s^3 + 2 s^2 + s
如果我们拿到的传递环数是以零极点的形式表示的,而我们又不想手动的去展成多项式形式,可以采用如下的方式构建传递函数,我们把传递函数的零点z,极点p,增益k,分别放到一个向量中,然后再调用zpk()函数进行构建,如构建如下传递环数的代码如下:
1 s ( s + 1 ) 2 frac{1}{s(s+1)^2} s(s+1)21
1
2
3
4
5z=[]; //没有零点就空着,若里面写零代表分子为S p=[0 -1 -1]; k=[1]; G=zpk(z,p,k)
运行结果如下:
1
2
3
4
5
6G = 1 --------- s (s+1)^2
其实以上两种模型之间可以相互转化,转化代码如下:
1
2
3
4
5
6
7
8
9num_1=[1]; den_1=[1 2 1 0]; G_1=tf(num_1,den_1) [z,p,k]=tf2zp(num_1,den_1); //传递函数模型转化为零极点模型 G_2=zpk(z,p,k) [num_3,den_3]=zp2tf(z,p,k); //零极点模型转化为传递函数模型 G_3=tf(num_3,den_3)
运行结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18G_1 = 1 --------------- s^3 + 2 s^2 + s G_2 = 1 --------- s (s+1)^2 G_3 = 1 --------------- s^3 + 2 s^2 + s
二、多个传递环数间串联、并联、反馈的构建方法
本部分我们用如下两个传递函数为例,就他们之间进行串联,并联,反馈的模型搭建方法进行介绍。
1 s 3 + 2 s 2 + s 和 1 s 2 + 2 s + 1 frac{1}{s^3+2s^2+s} 和 frac{1}{s^2+2s+1} s3+2s2+s1和s2+2s+11
1、串联
方法一:先根据第一部分的介绍搭建两个传递函数,然后利用用series函数计算两个传递函数的串联形式,代码如下:
1
2
3
4
5
6
7
8
9
10
11num_1=[1]; den_1=[1 2 1 0]; G_1=tf(num_1,den_1); num_2=[1]; den_2=[1 2 1 ]; G_2=tf(num_2,den_2); [num_c,den_c]=series(G_1,G_2); G_c=tf(num_c,den_c)
这种方法呢有时会出现输出参数太多 (InputOutputModel)的错误,为了简洁性和不易错性,推荐大家采用以下的第二种方法,并联和反馈也将采用如下方法介绍:
1
2
3
4
5
6
7num_1=[1]; den_1=[1 2 1 0]; num_2=[1]; den_2=[1 2 1 ]; [num_c,den_c]=series(num_1,den_1,num_2,den_2); G_c=tf(num_c,den_c)
运行结果如下:
1
2
3
4
5
6G_c = 1 ------------------------------- s^5 + 4 s^4 + 6 s^3 + 4 s^2 + s
2、并联
采用parallel()函数可以计算两个传递函数的并联形式,代码如下:
1
2
3
4
5
6
7num_1=[1]; den_1=[1 2 1 0]; num_2=[1]; den_2=[1 2 1 ]; [num_b,den_b]=parallel(num_1,den_1,num_2,den_2); G_b=tf(num_b,den_b)
运行结果如下:
1
2
3
4
5
6G_b = s^3 + 3 s^2 + 3 s + 1 ------------------------------- s^5 + 4 s^4 + 6 s^3 + 4 s^2 + s
3、反馈
采用feedback()函数可以计算两个传递函数的反馈形式,相比于前两种情况,feedback()多了最后一个参数,为1时为正反馈,为-1时为负反馈,缺省时为负反馈,代码如下:
1
2
3
4
5
6
7num_1=[1]; den_1=[1 2 1 0]; num_2=[1]; den_2=[1 2 1 ]; [num_f,den_f]=feedback(num_1,den_1,num_2,den_2,-1); //此处为负反馈,将-1改为1,则变成正反馈 G_f=tf(num_f,den_f)
运行结果如下:
1
2
3
4
5
6G_f = s^2 + 2 s + 1 ----------------------------------- s^5 + 4 s^4 + 6 s^3 + 4 s^2 + s + 1
用以上方法就可以得到系统的闭环传递环数,也就得到了系统的闭环特征方程,可以进步求解特征方程的特征根,从而判断系统的稳定性,具体步骤可参考如下博文:博文链接:利用MATLAB解特征方程,并画出特征根的分布,便于分析系统的稳定性。
最后
以上就是俭朴汉堡最近收集整理的关于利用MATLAB编程实现系统传递函数的构建以及它们之间进行串联、并联、反馈时的构建方法的全部内容,更多相关利用MATLAB编程实现系统传递函数内容请搜索靠谱客的其他文章。
发表评论 取消回复