📄 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 + -