概述
本文主要介绍如何利用MATLAB编程实现系统传递函数的构建以及它们之间进行串联、并联、反馈时的构建方法
一、传递函数的构建方法
首先 ,我们把想要构建的传递函数分子和分母的系数按照阶次从高到低(缺项补零)分别保存在一个向量中,然后调用tf()函数进行构建,tf函数用来建立实部或复数传递函数模型或将状态方程、或零级增益模型转化成传递函数形式。比如构建如下传递函数的代码如下:
1 s 3 + 2 s 2 + s frac{1}{s^3+2s^2+s} s3+2s2+s1
num=[1];
den=[1 2 1 0];
G=tf(num,den)
运行结果如下:
G =
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
z=[]; //没有零点就空着,若里面写零代表分子为S
p=[0 -1 -1];
k=[1];
G=zpk(z,p,k)
运行结果如下:
G =
1
---------
s (s+1)^2
其实以上两种模型之间可以相互转化,转化代码如下:
num_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)
运行结果如下:
G_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函数计算两个传递函数的串联形式,代码如下:
num_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)的错误,为了简洁性和不易错性,推荐大家采用以下的第二种方法,并联和反馈也将采用如下方法介绍:
num_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)
运行结果如下:
G_c =
1
-------------------------------
s^5 + 4 s^4 + 6 s^3 + 4 s^2 + s
2、并联
采用parallel()函数可以计算两个传递函数的并联形式,代码如下:
num_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)
运行结果如下:
G_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时为负反馈,缺省时为负反馈,代码如下:
num_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)
运行结果如下:
G_f =
s^2 + 2 s + 1
-----------------------------------
s^5 + 4 s^4 + 6 s^3 + 4 s^2 + s + 1
用以上方法就可以得到系统的闭环传递环数,也就得到了系统的闭环特征方程,可以进步求解特征方程的特征根,从而判断系统的稳定性,具体步骤可参考如下博文:博文链接:利用MATLAB解特征方程,并画出特征根的分布,便于分析系统的稳定性。
最后
以上就是俭朴汉堡为你收集整理的利用MATLAB编程实现系统传递函数的构建以及它们之间进行串联、并联、反馈时的构建方法的全部内容,希望文章能够帮你解决利用MATLAB编程实现系统传递函数的构建以及它们之间进行串联、并联、反馈时的构建方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复