MIT自适应律
参考书籍 系统辨识与自适应控制 MATLAB仿真(第三版)
仿真环境 Matlab 2016a
参照书上P59的例题搭建 只放代码和结果
单纯的MIT自适应律代码如下:
%MIT自适应律
%一些量的初始化
clear
clc
r = 0.1;%自适应增益
gain = 0.1;%方波增益
K_c_0 = 0;%可调增益
L = 1000;%迭代次数
h = 0.1;%步长
u = gain*[ones(1,L/4),-ones(1,L/4),ones(1,L/4),ones(1,L/4)];%输入是一个幅值为r的方波
u_0 = 0;x_0 = [0;0];%参考模型的输入和初值
y_p = zeros(L,1);x_p = zeros(2,1);y_p_0 = 0;x_p_0 = zeros(2,1);%被控模型的输入输出序列和初始值
y_m = zeros(L,1);x_m = zeros(2,1);y_m_0 = 0;x_m_0 = zeros(2,1);%参考模型的输入输出序列和初始值
uu = [];uu_0 = 0;%被控模型的输入 其实等于kc*u;
e = zeros(L,1);e_0 = 0;%误差序列和初值
K_c = zeros(L,1);%可变增益序列 放在一个数组中观察变化情况
%参考模型
num_m = [1];den_m=[1 1 1];
%T2S
[Am,Bm,Cm,Dm] = tf2ss(num_m,den_m);
%稳定被控对象
num_p = [1];den_p = [1 1 1];
%T2S
[Ap,Bp,Cp,Dp] = tf2ss(num_p,den_m);
for i = 1:L
%参考输出
x_m = x_m_0 + h*(Am*x_m_0 + Bm*u_0);
y_m(i) = Cm*x_m + D