?? runtracklsq.m
字號:
function [Kp,Ki,Kd] = runtracklsq
% runtracklsq函數使用 LSQNONLIN 在 Simulink 中仿真
tic %開始計時
optsimpid % 載入模型
pid0 = [20,1,5]; % 設置初值
options = optimset('LargeScale','off','Display','iter','HessUpdate','steepdesc',... %設置優化參數
'TolX',0.001,'TolFun',0.001);
pid = lsqnonlin(@tracklsq, pid0,[],[], options); %調用優化函數
Kp = pid(1); Ki = pid(2); Kd = pid(3); %賦值
function F = tracklsq(pid) %計算目標函數向量變量,變量為采樣點的輸出值與單位階躍輸入值之差
Kp = pid(1);
Ki = pid(2);
Kd = pid(3);
% 計算函數值
simopt = simset('solver','ode5','SrcWorkspace','Current');
% 設置 SIM 函數的參數
[tout,xout,yout] = sim('optsimpid',[0 20],simopt);
F = yout-1;
end
toc %結束計時
Kp
Ki
Kd
plot(yout,'b');
title('倒擺系統PID控制器優化設計');
xlabel('Time[sec]t');
ylabel('y');
text(30,1.2,'控制對象:1/s^2+10)','color','m');
grid on
hold on
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -