1. 程式人生 > >Matlab:傳遞函式(含遲延環節)/狀態空間方程/z傳遞函式的構造/運算/轉化

Matlab:傳遞函式(含遲延環節)/狀態空間方程/z傳遞函式的構造/運算/轉化

1、傳遞函式

1.1 構造傳遞函式

(1)


    Matlab可以這樣構造上式

num=[10 30 20];
den=[1 12 47 60];
sysc=tf(num,den)
    執行結果


(2)


    根據零極點構造表示式:

z=[-1 -2];
p=[-3 -4 -5];
k=10;
sysc=zpk(z,p,k)
    執行結果:


(3)多項式表示式和零極點表示式之間的轉化

    已有

num=[10 30 20];den=[1 12 47 60];sysc_tf=tf(num,den);
z=[-1;-2];p=[-3;-4;-5];k=10;sysc_zpk=zpk(z,p,k);

  i  多項式轉化為零極點形式:

sysc_tf1=tf(sysc_zpk)

    或者

[z1,p1,k1]=tf2zp(num,den);
sysc_zpk=zpk(z1,p1,k1)

    結果都是


ii零極點轉化為多項式形式:

sysc_tf=tf(sysc_zpk)

    或者

[num1,den1]=zp2tf(z,p,k);
sysc_tf=tf(num1,den1)

    結果都是


(4)

    構造下式所示的傳遞函式


可以:

num=[5];
den=[1 10 0];
g=tf(num,den,'ioDelay',3)

也可以

z=[];
p=[0 -10];
k=1;
g2=zpk(z,p,k,'ioDelay',3)

1.2 傳遞函式串聯、並聯、反饋

num1=[1 2];den1=[3 4];G1=tf(num1,den1);
num2=[1 2];den2=[3 4];G2=tf(num2,den2);

1.2.1串聯

G3=series(G1,G2)

    或者

[num3,den3]=series(num1,den1,num2,den2);
G3=tf(num3,den3)

1.2.2並聯

G3=parallel(G1,G2)

    或者

[num3,den3]=parallel(num1,den1,num2,den2);
G3=tf(num3,den3)
1.2.3(負)反饋
G3=feedback(G1,G2)

    或者

[num3,den3]=feedback(num1,den1,num2,den2);
G3=tf(num3,den3)

    feedback(G,H)。其中G是傳遞函式,H為反饋函式,表示一個控制系統G,對其進行負反饋H(要求正反饋用-H)。

2、z傳遞函式

2.1 z傳遞函式的構造

num=[1 2];
den=[1 2 3];
G=tf(num,den,1)%取樣時間為1s

結果:


或者可以這樣

z=tf('z',1);
G=(z+2)/(z^2+2*z+3)

結果也是


2.2 z傳遞函式和傳遞函式的轉化

    z函式轉化為s函式

num=[1 2];den=[1 2 3];G=tf(num,den,1);%取樣時間為1s
csysc=d2c(G)
[num, den] = tfdata( csys, 'v' )%獲取s函式分子、分母

    結果


    s函式轉化為z函式

    緊接上式

Hd=c2d(csysc,1,'zoh')

得到結果


3、狀態空間函式

3.1構造狀態空間函式

A=[0 1 -2;3 4 0; 5 0 0];
B=[0;1;0];
C=[0 0 1];
D=0;
sys=ss(A,B,C,D,1)

3.2建構函式和傳遞函式的轉化

A=[0 1 -2;3 4 0; 5 0 0];B=[0;1;0];C=[0 0 1];D=0;
%狀態空間到傳遞函式
[num,den]=ss2tf(A,B,C,D)
%傳遞函式到狀態空間
[A,B,C,D]=tf2ss(num,den)
需要注意的是狀態空間方程不唯一,傳遞函式唯一