1.採用雙線性變換法將傳遞函數離散化
已知一個模擬控制器的傳遞函數爲:
用雙線性變換法(Tustin)法,求出與之等價的離散表達式 D(z),採樣週期 T=1s:
num = [11 1];
den = [3 1];
sys = tf(num,den);
% bode(sys);
dsys = c2d(sys, 1, 'tustin') % 用雙線性變換法進行離散,第二個參數爲採樣週期
% dsys = c2d(sys, 1, 'zoh') % 用零階保持法進行離散,第二個參數爲採樣週期
figure; bode(sys,'b', dsys, 'r');
手動計算,則將s=2(z-1)/(z+1) 代入。
2.離散化方法比較試驗
(1)繪製該系統的階躍響應、脈衝響應和頻率響應。
num = [1 0.5 100];
den = [1 5 100];
figure;
subplot(2,2,1); step(num,den); title('階躍響應');
subplot(2,2,2); impulse(num,den); title('脈衝響應');
subplot(2,2,3); bode(num,den); title('頻率響應');
(2)若採樣週期 T=0.1s,分別採用 ZOH 方法和 FOH 方法將 H(s)離散化,並將連續系統、離散系統(ZOH 法)和離散系統(FOH 法)的階躍響應繪製於同一幅圖中。
num = [1 0.5 100];
den = [1 5 100];
sys = tf(num,den);
dsys_zoh = c2d(sys, 0.1, 'zoh');
dsys_foh = c2d(sys, 0.1, 'foh');
figure;
step(sys,'r',dsys_zoh,'b',dsys_foh,'g');
legend('連續曲線','zoh曲線','foh曲線');
(3)若採樣週期 T=0.1s,採用脈衝響應不變法將 H(s)離散化,並將連續系統、離散系統(脈衝響應不變法)的脈衝響應繪製於同一幅圖中。
num = [1 0.5 100];
den = [1 5 100];
sys = tf(num,den)
dsys = c2d(sys, 0.1, 'imp');
impulse(sys,'r',dsys,'b');
legend('連續曲線','脈衝響應不變曲線');
(4)若採樣週期 T=0.05s,分別採用雙線性變化法、零極點匹配法和 ZOH 法將 H(s)離散化,並將連續系統、離散系統(雙線性變化法)、離散系統(零極點匹配法)和離散系統(ZOH 法)的頻率響應繪製於同一幅圖中。
num = [1 0.5 100];
den = [1 5 100];
sys = tf(num,den);
dsys_tustin = c2d(sys, 0.05, 'tustin');
dsys_matched = c2d(sys, 0.05, 'matched');
dsys_zoh = c2d(sys, 0.05, 'zoh');
bode(sys,'r',dsys_tustin,'b',dsys_matched,'y',dsys_zoh,'g');
legend('連續曲線','雙線性變化法','零極點匹配法','ZOH法');
(5)採用零極點匹配法,分別設採樣週期 T 爲 0.1s,0.15s 和 0.3s,將連續系統、離散系統(T=0.1s)、離散系統(T=0.15s)和離散系統(T=0.3s)的頻率響應繪製於同一幅圖中。
num = [1 0.5 100];
den = [1 5 100];
sys = tf(num,den);
dsys_1 = c2d(sys, 0.1, 'matched');
dsys_15 = c2d(sys, 0.15, 'matched');
dsys_3 = c2d(sys, 0.3, 'matched');
bode(sys,'r',dsys_1,'b',dsys_15,'y',dsys_3,'g');
legend('連續曲線','T=0.1','T=0.15','T=0.3');
附:構建閉環單位負反饋系統
num0 = [0.81 0.162];
den0 = [1 2 0 0];
[num, den] = cloop(num0, den0); % 單位閉環負反饋
sys = tf(num, den);
dsys = c2d(sys, 0.1, 'tustin')
step(sys,'r', dsys, 'b');
legend('連續系統','離散系統');