lsim函數用法


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時,輸入有一個階躍變化,該圖顯示了系統從此時的狀態值開始對這個新信號的響應:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM