利用MATLAB编程实现系统传递函数的构建以及它们之间进行串联、并联、反馈时的构建方法

   本文主要介绍如何利用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} ss+121

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+s1s2+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解特征方程,并画出特征根的分布,便于分析系统的稳定性。

猜你喜欢

转载自blog.csdn.net/qq_44339029/article/details/106336166