lsim函數:lsim函數是針對線性時不變模型,給定任意輸入,得到任意輸出。lsim函數表示任意輸入函數的響應,連續系統對任意輸入函數的響應可以利用lsim函數求取。
語法(常用)
1.分子分母形式
lsim(num,den,u,t)
2.傳遞函數形式
lsim(sys,u,t)
3.狀態空間形式
lsim(A,B,C,D,u,t)
4.其它形式
lsim(sys,u,t,x0)
lsim(sys,u,t,x0,method)
y=lsim(sys,u,t,x0)
y=lsim(sys,u,t,x0,method)
其中,u為由給定輸入序列構成的矩陣,它的每列對應一個輸入,每行對應一個新的時間點,其行數與時間t的長度相等,其它的用法與step函數相同。
說明
響應圖
lsim(sys,u,t)繪制動態系統模型sys對輸入歷史記錄(t,u)的模擬時間響應。 向量t指定用於仿真的時間樣本。 對於單輸入系統,輸入信號u是與t長度相同的向量。 對於多輸入系統,u是一個數組,其行數與時間樣本(length(t))一樣多,而列數與sys的輸入一樣多。
lsim(sys,u,t,x0)當sys是狀態空間模型時,進一步指定初始狀態值的向量x0。
lsim(sys,u,t,x0,method)當sys是連續時間模型時,如何在樣本之間插入輸入值,method即插入輸入值的方法。
響應數據
y=lsim(sys,u,t)返回與輸入y同時采樣 的系統響應t。對於單輸出系統,y是與長度相同的向量t。對於多輸出系統, y是一個數組,其中的行與時間樣本(length(t))一樣多,列與的輸出一樣多
sys
。該語法不會生成圖。
y=lsim(sys,u,t,x0)當sys是狀態空間模型時,進一步指定初始狀態值的向量x0。
y=lsim(sys,u,t,x0,method)當sys是連續時間模型時,如何在樣本之間插入輸入值,method即插入輸入值的方法。
示例
1.示例1
%------------------------------------ H(s)=[ 2s^2 + 5s + 1 --------------- s^2 + 2s + 3 s - 1 ----------- s^2 + s + 5 ] %------------------------------------ %% clc; clear off; H = [tf([2 5 1],[1 2 3]);tf([1 -1],[1 1 5])]; [u,t] = gensig('square',4,10,0.1); lsim(H,u,t);
如圖所示:
當控制系統為狀態空間表示時,則:
A = [-3 -1.5; 5 0]; B = [1; 0]; C = [0.5 1.5]; D = 0; sys = ss(A,B,C,D); [u,t] = gensig("square",10,20); lsim(sys,u,t) grid on
采用方波輸入,響應如圖所示:
2.示例2
如下所示的傳遞函數:
sys = tf(3,[1 2 3]) sys = 3 ------------- s^2 + 2 s + 3
它是一個連續的系統,則:
sys = tf(3,[1 2 3]); t = 0:0.04:8; % 201 points u = max(0,min(t-1,1)); lsim(sys,u,t) grid on
如圖所示:
用lsim函數獲取模擬的響應數據為:
y = lsim(sys,u,t); size(y) ans = 1×2 201 1
向量y包含t相應時間的模擬響應。
3.示例3
當控制系統為離散型時,且該傳遞函數的采樣時間為0.05 s。 使用相同的采樣時間來生成時間矢量t和階躍信號u。,如下所示:
sys = tf([0.06 0.05],[1 -1.56 0.67],0.05); t = 0:0.05:4; u = max(0,min(t-1,1)); lsim(sys,u,t)
如圖所示:
當輸入為正弦波時,即模擬系統對周期為1 s,持續時間為4 s的正弦波的響應。則:
sys = tf([0.06 0.05],[1 -1.56 0.67],0.05); t = 0:0.05:4; [u,t] = gensig("sine",1,4,0.05); lsim(sys,u,t)
其響應如圖所示:
4.示例4
lsim允許在同一軸上繪制多個動態系統的模擬響應。 例如,比較帶有PI控制器和PID控制器的系統的閉環響應。 創建系統的傳遞函數並調整控制器。如下所示:
H = tf(4,[1 10 25]); C1 = pidtune(H,'PI'); C2 = pidtune(H,'PID'); %形成閉環系統 sys1 = feedback(H*C1,1); sys2 = feedback(H*C2,1); %繪制兩個系統對周期為4 s的方波的響應。 [u,t] = gensig("square",4,12); lsim(sys1,sys2,u,t) grid on legend("PI","PID")
如圖所示:
默認情況下,lsim繪制的每個系統選擇不同的顏色。 可以使用LineSpec輸入參數指定顏色和線條樣式。
H = tf(4,[1 10 25]); C1 = pidtune(H,'PI'); C2 = pidtune(H,'PID'); %形成閉環系統 sys1 = feedback(H*C1,1); sys2 = feedback(H*C2,1); %繪制兩個系統對周期為4 s的方波的響應。 [u,t] = gensig("square",4,12); lsim(sys1,"r--",sys2,"b",u,t) grid on legend("PI","PID")
如圖所示:
5.示例5
默認情況下,lsim假設在模擬開始時所有狀態均為零,從而模擬模型。 模擬狀態空間模型的響應時,當使用可選的x0輸入參數指定非零初始狀態值。 考慮以下兩個狀態的SISO狀態空間模型。
A = [-1.5 -3; 3 -1]; B = [1.3; 0]; C = [1.15 2.3]; D = 0; sys = ss(A,B,C,D); x0 = [-0.2 0.3]; t = 0:0.05:8; u = zeros(length(t),1); u(t>=2) = 1; lsim(sys,u,t,x0) grid on
如圖所示,圖的前半部分顯示了系統從初始狀態值[-0.2 0.3]的自由演化。 在t = 2時,輸入有一個階躍變化,該圖顯示了系統從此時的狀態值開始對這個新信號的響應: