利用MATLAB編程實現系統傳遞函數的構建以及它們之間進行串聯、並聯、反饋時的構建方法

   本文主要介紹如何利用MATLAB編程實現系統傳遞函數的構建以及它們之間進行串聯、並聯、反饋時的構建方法

一、傳遞函數的構建方法

    首先 ,我們把想要構建的傳遞函數分子和分母的係數按照階次從高到低(缺項補零)分別保存在一個向量中,然後調用tf()函數進行構建,tf函數用來建立實部或複數傳遞函數模型或將狀態方程、或零級增益模型轉化成傳遞函數形式。比如構建如下傳遞函數的代碼如下:

1s3+2s2+s\frac{1}{s^3+2s^2+s}

num=[1];
den=[1 2 1 0];
G=tf(num,den)
    運行結果如下:
G =
 
         1
  ---------------
  s^3 + 2 s^2 + s
    如果我們拿到的傳遞環數是以零極點的形式表示的,而我們又不想手動的去展成多項式形式,可以採用如下的方式構建傳遞函數,我們把傳遞函數的零點z,極點p,增益k,分別放到一個向量中,然後再調用zpk()函數進行構建,如構建如下傳遞環數的代碼如下:

1ss+12\frac{1}{s(s+1)^2}

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

二、多個傳遞環數間串聯、並聯、反饋的構建方法

    本部分我們用如下兩個傳遞函數爲例,就他們之間進行串聯,並聯,反饋的模型搭建方法進行介紹。

1s3+2s2+s1s2+2s+1\frac{1}{s^3+2s^2+s} 和 \frac{1}{s^2+2s+1}

  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解特徵方程,並畫出特徵根的分佈,便於分析系統的穩定性。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章