日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

P5 Matlab/Simulink 在时域分析中的应用-《Matlab/Simulink与控制系统仿真》程序指令总结

發布時間:2025/4/5 windows 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P5 Matlab/Simulink 在时域分析中的应用-《Matlab/Simulink与控制系统仿真》程序指令总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上一篇回到目錄下一篇

《Matlab/Simulink與控制系統仿真》程序指令總結

  • Matlab_Simulink_BookExample
  • 5. Matlab/Simulink 在時域分析中的應用
    • 5.1 Matlab 函數
    • 例題 5_1
    • 例題 5_2
    • 例題 5_5
    • 例題 5_6
    • 例題 5_7
    • 例題 5_8
    • 例題 5_9
    • 例題 5_10
    • 例題 5_17
    • 例題 5_18

書中詳細實例代碼可見:Github

Matlab_Simulink_BookExample

圖書:《Matlab/Simulink與控制系統仿真》

5. Matlab/Simulink 在時域分析中的應用

5.1 Matlab 函數

step() 單位階躍響應函數

impulse() 單位脈沖響應函數

initial() 零輸入響應函數

lsim() 任意輸入響應函數

  • lsim(sys1, u, t) 或 lsim(sys2, u, t, x0)
  • u 為輸入信號,x0 為初始條件,t 為等間隔時間向量,sys1 為 tf() 或 zpk() 模型,sys2 為 ss() 模型。
  • [Y, T, X] = lsim(sys1, u, t) 和 [Y, T, X] = lsim(sys2, u, t, x0)
  • Y 為響應的輸出,T 為仿真的時間,X 為系統的狀態變量。
  • 當不帶輸出變量引用函數時,lsim() 函數在當前圖形窗口中直接繪制出系統的零輸入響應曲線。
  • 當帶有輸出變量引用函數時,可得到系統零輸入響應的輸出數據,而不直接繪制出曲線。
  • 對于離散系統,只需在連續系統對應函數前加 “d” 即可,如 dstep, dimpulse 等,其調用格式與 step, impulse 類似。
  • pzmap() 繪制系統的零極點圖

    例題 5_1

    % Page108:已知閉環傳遞函數,求單位階躍響應和單位斜坡響應 clear; clc;num = [1]; den = [1, 0.4, 1]; % 響應時間 t = [0:0.1:10]; % u 為單位斜坡輸入 u = t; % 單位階躍響應 y = step(num, den, t); % 單位斜坡響應 y1 = lsim(num, den, u, t); % 將兩條響應曲線繪制在同一個圖上 plot(t, y, 'b-', t, y1, 'r:') % 添加柵格 grid % 添加橫縱坐標軸 xlabel('Time [ses] t'); ylabel('y'); % 添加圖標題 title('單位階躍和單位斜坡輸入響應曲線'); % 添加文字標注 legend('單位階躍響應曲線', '單位斜坡響應曲線');

    例題 5_2

    % Page109:已知開環傳函,系統輸入信號為三角波,求響應 clear; clc;numg = [1, 2]; deng = [1, 10, 1]; % 建立單位負反饋傳遞函數 [num, den] = cloop(numg, deng, -1); % 產生三角波 v1 = [0:0.1:1]; v2 = [0.9:-0.1:-1]; v3 = [-0.9:0.1:0]; u = [v1, v2, v3]; % 仿真時間 t = [0:0.1:4]; % 求取系統在三角波輸入下的響應 [y, x] = lsim(num, den, u, t); % 將輸入的三角波和輸出響應曲線繪制在同一個圖上 plot(t, y, t, u); grid % 添加橫縱坐標軸 xlabel('Time [ses] t'); ylabel('y'); % 添加圖標題 title('三角波輸入和輸入下的響應曲線'); % 添加文字標注 legend('響應曲線', '三角波輸入');

    例題 5_5

    % Page112:使用游動鼠標法和編程法求取系統的性能指標 clear; clc;% 建立零極點模型 G = zpk([ ], [-1+3i, -1-3i], 3); % 求取階躍響應 step(G);% 以上為游動鼠標法 % 以下為編程法% 建立零極點模型 G = zpk([ ], [-1+3i, -1-3i], 3); % 計算最大峰值時間和它對應的超調量 C = dcgain(G); % 求取階躍響應 [y, t] = step(G); plot(t,y) grid % 取得最大峰值時間 [Y, k] = max(y); timetopeak = t(k); % 計算超調量 percentovershoot = 100 * (Y-C)/C; % 計算上升時間 n = 1; while y(n) < Cn = n+1; end risetime = t(n); % 計算穩態響應時間 i = length(t); while (y(i)>0.98*C)&(y(i)<1.02*C)i = i-1; end settlingtime = t(i);

    例題 5_6

    % Page114:已知開環傳函,計算阻尼比不同時單位負反饋系統的單位階躍響應曲線 clear; clc;% 固有頻率 wn = 1; % 7 個不同的阻尼比取值 sigma = [0, 0.2, 0.4, 0.6, 0.9, 1.2, 1.5]; num = wn*wn; % 將 t 在 0 到 20 之間均等分成 200 份 t = linspace(0, 20, 200); for j = 1:7% 求開環傳函的分母den = conv([1,0], [1,2*wn*sigma(j)]);% 建立開環傳遞函數s1 = tf(num, den);% 建立單位負反饋系統的傳遞函數sys = feedback(s1, 1);% 求取單位階躍響應y(:, j) = step(sys, t); end % 在同一圖上繪制單位階躍響應曲線并添加柵格 plot(t, y(:, 1:7));grid % 添加圖標題 title('典型二階系統取不同阻尼比時的單位階躍響應'); % 放置 sigma 取不同值的文字注釋 gtext('sigma=0'); gtext('sigma=0.2'); gtext('sigma=0.4'); gtext('sigma=0.6'); gtext('sigma=0.9'); gtext('sigma=1.2'); gtext('sigma=1.5');

    例題 5_7

    % Page116:已知開環傳函,求k不同時單位負反饋系統的單位階躍響應曲線 clear; clc;% 時間常數 T = 1; % 6 個不同的開環增益取值 k = [0.1, 0.2, 0.5, 0.8, 1.0, 2.4]; % 將時間 t 在 0 到 20 之間分成 200 份 t = linspace(0, 20, 200); % 開環傳遞函數的分子、分母表達式 num = 1; den = conv([1, 0], [T 1]); for j = 1:6% 建立開環傳遞函數s1 = tf(num*k(j), den);% 建立閉環傳遞函數sys = feedback(s1, 1);% 求取單位階躍響應y(:, j) = step(sys, t); end % 在同一圖上繪制單位階躍響應曲線并添加柵格 plot(t, y(:, 1:6)); grid % 添加圖標題 title('典型二階系統取不同開環增益時的單位階躍響應') % 放置 k 取不同值的文字注釋 gtext('k=0.1'); gtext('k=0.2'); gtext('k=0.5'); gtext('k=0.8'); gtext('k=1.0'); gtext('k=2.4');

    例題 5_8

    % Page117:已知二階系統,繪制tau不同值時,單位負反饋系統的單位階躍曲線 clear; clc;% 時間常數 T = 1; % 開環增益 K 的值 K = 1; % 6 個不同的微分反饋系數 tau = [0, 0.05, 0.2, 0.5, 1.0, 2.4]; % 將 t 在 0 到 20 之間均等分成 200 份 t = linspace(0,20,200); % 開環傳遞函數的分子多項式 num = 1; for j=1:6% 求取開環傳函的分母表達式den=conv([1,0], [T, 1+tau(j)]);% 建立開環傳函s1 = tf(num*K, den);% 建立單位負反饋系統的傳遞函數sys = feedback(s1, 1);% 求取單位階躍響應y(:,j) = step(sys, t); end % 在同一圖上繪制單位階躍響應曲線并添加柵格 plot(t, y(:,1:6)); grid % 放置 K 取不同值的文字注釋 gtext('tau=0'); gtext('tau=0.05'); gtext('tau=0.2'); gtext('tau=0.5'); gtext('tau=1.0'); gtext('tau=2.4');

    例題 5_9

    % Page119:已知閉環傳函,求未知量取不同值的單位階躍響應 clear; clc;% 3 個不同的微分時間常數 tau = [0, 0.2, 0.4]; % 將 t 在 0 到 8 之間均等分為 80 份 t = linspace(0, 8, 80); % 開環傳遞函數的分子、分母多項式 num = 4; den = [1 2 4]; for j=1:3% 建立系統傳遞函數sys = tf(conv(num, [tau(j), 1]),den);% 求取單位階躍響應y(:,j) = step(sys, t); end % 將 3 條響應曲線繪制在同一個圖傻姑娘并添加柵格 plot(t,y(:, 1:3)); grid; title('比例微分控制,不同微分時間下的系統階躍響應'); gtext('tau=0'); gtext('tau=0.2'); gtext('tau=0.4');

    例題 5_10

    % Page119:已知傳遞函數,分析主導極點,并比較新系統與原系統的單位階躍響應 clear; clc;% 原系統的增益 K = 147.3; % 仿真時間 t = 0:0.1:6; num0 = K*[1, 1.5]; % 傳遞函數分母的系數 den00 = [1, 2, 5]; den01 = [1, 10, 26]; den02 = [1, 1.7]; % 建立原系統傳遞函數 sys0 = tf(num0, conv(den00, conv(den01, den02))); % 求原系統的階躍響應 y0 = step(sys0, t); num1 = 5; % 建立主導極點所構成的系統傳遞函數 sys1 = tf(num1, den00); % 求取主導極點所構成的系統的階躍響應 y1 = step(sys1, t); % 繪制階躍響應曲線并添加柵格 plot(t, y0, t, y1); grid; % 添加圖標題 title('階躍響應對比'); % 放置區別兩條曲線的文字注釋 gtext('原系統的單位階躍響應'); gtext('主導極點構成的系統的單位階躍響應');

    例題 5_17

    % Page131:已知傳遞函數,判斷穩定性,繪制零極點圖 clear; clc;% 開環零點、極點、增益 z = -2.5; p = [0, -0.5, -0.7, -3]; k = 0.2; % 建立零極點形式的開環傳遞函數 Go = zpk(z,p,k); % 單位負反饋連接 Gc = feedback(Go, 1); % 建立閉環傳遞函數 Gctf = tf(Gc); % 獲取閉環傳遞函數的特征多項式 dc = Gctf.den; % 將特征多項式系數轉換為字符形式的函數,便于查看 dens = poly2str(dc{1}, 's');% 獲取其多項式系數 den = [1, 4.2, 3.95, 1.25, 0.5]; % 求取特征根 p = roots(den); % 繪制零極點圖 pzmap(Gctf); grid

    例題 5_18

    % Page132:建立模型,分析穩定性,繪制階躍響應曲線,計算穩態誤差,分析性能 clear; clc;% 傳遞函數的分子、分母多項式系數 num1 = [20]; den1 = [1 2 0]; % 二階系統的傳遞函數 sys1 = tf(num1, den1); % 微分環節傳遞函數的分子、分母多項式系數 num2 = [0.1 0]; den2 = [0 1]; % 微分環節的傳遞函數 sys2 = tf(num2, den2); % 內環反饋的傳遞函數 sys_inner = feedback(sys1, sys2); % 外環反饋的傳遞函數 sys_outer = feedback(sys_inner, 1);% 根據求得的系統傳遞函數,利用 roots 命令判斷系統的穩定性 % 閉環系統傳遞函數分母多項式系數 den = [1 4 20]; % 求閉環系統特征多項式的根 roots(den) % 利用 pzmap 命令繪制系統的零極點圖 pzmap(sys_outer); grid on;% 計算系統的階躍響應 % 閉環系統傳遞函數分子、分母多項式系數 num = [20]; den = [1 4 20]; % 計算閉環系統的階躍響應 [y, t, x] = step(num, den); % 繪制階躍響應曲線 plot(x, y); grid on;% 計算系統的超調量 % 階躍響應的穩態值 y_stable = 1; % 閉環系統階躍響應的最大值 max_response = max(y); % 階躍響應的超調量 sigma = (max_response - y_stable) / y_stable;% 計算系統的上升時間 % 遍歷響應曲線 for i=1:length(y)% 如果某個時刻系統的輸出值大于穩態值if y(i)>y_stable% 循環中斷break;end end % 計算此時對應的時間,就是階躍響應的上升時間 tr = x(i) % 計算系統的峰值時間 % 查找系統階躍響應的最大值 [max_response, index] = max(y); % 計算此時對應的時間,就是階躍響應的峰值時間 tp = x(index) % 計算系統的調整時間 ---> 取物插帶為 2 % 遍歷響應曲線 for i=1:length(y)% 如果當前響應值在誤差帶內if max(y(i:length(y))) <= 1.02 * y_stableif min(y(i:length(y))) >= 0.98 * y_stable% 循環退出break;endend end % 計算此時對應的時間,就是系統階躍響應的調整時間 ts = x(i) 上一篇回到目錄下一篇

    總結

    以上是生活随笔為你收集整理的P5 Matlab/Simulink 在时域分析中的应用-《Matlab/Simulink与控制系统仿真》程序指令总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。