自适应控制律matlab

您好,我刚开始使用matlab,这是我的代码,
我的问题:
为什么显示出的波形 x1无法跟踪xd?
为什么我用的迭代法但x1一直保持不变?
为什么输入u是一个数 而不是一个矩阵?
感谢您的解答!


```matlab
% 定义时域、迭代域参数
stepLength = 0.01;                                       % 步长
stepnum = 500;                                          % 时域步长数量
timeStart = 0;                                            % 仿真的开始时间
timeEnd = stepnum*stepLength;                             % 仿真的终止时间=时域步长数量*步长
t=0:0.01:5;                                             % 仿真时间
iternum=5;                                                % 迭代次数

%%
%预分配存储空间,存储程序中运行数据
rownum=length(t);%cell
x1=zeros(iternum,rownum);%
x2=zeros(iternum,rownum);%
x3=zeros(iternum,rownum);%
x4 = zeros(iternum,rownum);%
x5 = zeros(iternum,rownum);%
x6 = zeros(iternum,rownum);%
x7 = zeros(iternum,rownum);%
x8 = zeros(iternum,rownum);%
x9 = zeros(iternum,rownum);%
x10 = zeros(iternum,rownum);%
x11 = zeros(iternum,rownum);%
x12 = zeros(iternum,rownum);%
xd= zeros(size(t));%
z1=zeros(iternum,rownum);
z2=zeros(iternum,rownum);
e1=zeros(iternum,rownum);
e2=zeros(iternum,rownum);
e3=zeros(iternum,rownum);%
alpha1=zeros(1,rownum);
x1s=zeros(iternum,rownum);%
e1s=zeros(iternum,rownum);%
e2s=zeros(iternum,rownum);%
e3s=zeros(iternum,rownum);%
de1s=zeros(iternum,rownum);%
de2s=zeros(iternum,rownum);%
u= zeros(iternum,rownum);
phi1=zeros(iternum,rownum);
phi2=zeros(iternum,rownum);
%%
%定义参数
mc=1;m=0.1;l=0.5;g=9.8;
c1=5;c2=5;gama1=0.7;gama2=0.6;
beta1=9;beta2=15;lamda1=2;lamda2=2;delta1=0.001;delta2=0.001;
x1(:,1)=0.6;x2(:,1)=0;
x3(:,1)=0;x4(:,1)=0;x5(:,1)=0;x6(:,1)=0;x7(:,1)=0;
x8(:,1)=0;x9(:,1)=0;x10(:,1)=0;x11(:,1)=0;x12(:,1)=0;
for k=1:5
for i=1:500
%%
%矩阵运算
xd=0.5.*cos(pi.*t);
dxd=-0.25.*pi.*sin(pi.*t);
ddxd=-0.125.*pi^2.*cos(pi.*t);

%%
%误差跟踪
if i>=1
    if i<=3
       miu=10*(0.3-i*stepLength).^3/0.027-15*(0.3-i*stepLength).^4/0.0081+6*(0.3-i*stepLength).^5/0.00243;
       dmiu=-30*(0.3-i*stepLength).^2/0.027+60*(0.3-i*stepLength).^3/0.0081-30*(0.3-i*stepLength).^4/0.00243;
    else  
       miu=0;
       dmiu=0;
    end
else
    miu=0;
    dmiu=0;
end

e1(k,i)=x1(k,i)-xd(i);%
e1s(k,i)=e1(k,i)*miu;
z1(k,i)=e1(k,i)-e1s(k,i);
de1s(k,i)=e1(k,i)*dmiu;
e2(k,i)=x2(k,i)-dxd(i);
e2s(k,i)=e2(k,i)*miu;
de2s(k,i)=e2(k,i)*dmiu;
e3s(k,i)=e3(k,1)*miu;
%%
%自适应律
phi1(1)=exp(-(x1(k,i)-2)^2/2)*exp(-(dxd(i)-2)^2/2)*exp(-(de1s(k,i)-2)^2/2)*exp(-(e2s(k,i)-2)^2/2);
phi1(2)=exp(-(x1(k,i)-1)^2/2)*exp(-(dxd(i)-1)^2/2)*exp(-(de1s(k,i)-1)^2/2)*exp(-(e2s(k,i)-1)^2/2);
phi1(3)=exp(-(x1(k,i)-0)^2/2)*exp(-(dxd(i)-0)^2/2)*exp(-(de1s(k,i)-0)^2/2)*exp(-(e2s(k,i)-0)^2/2);
phi1(4)=exp(-(x1(k,i)+1)^2/2)*exp(-(dxd(i)+1)^2/2)*exp(-(de1s(k,i)+1)^2/2)*exp(-(e2s(k,i)+1)^2/2);
phi1(5)=exp(-(x1(k,i)+2)^2/2)*exp(-(dxd(i)+2)^2/2)*exp(-(de1s(k,i)+2)^2/2)*exp(-(e2s(k,i)+2)^2/2);
phi1=phi1/sum(phi1);
%%

alpha1(i)=-c1*z1(k,i)+[x3(k,i) x4(k,i) x5(k,i) x6(k,i) x7(k,i)]*phi1;
z2(k,i)=e1(k,i)-e1s(k,i)-alpha1(i);

%%
%定义导数
    if k>1
        
dw1=1/(1-gama1)*(-gama1*x3(k,i)+beta1*z1(k,i)*phi1(1));

phi2(1)=exp(-(x1(k,i)-2).^2/2).*exp(-(x2(k,i)-2).^2/2).*exp(-(ddxd(i)-2).^2/2).*exp(-(de2s(k,i)-2)^2/2).*exp(-(e3s(k,i)-2).^2/2).*exp(-(-c1-2).^2/2).*exp(-(-phi1(1)*dw1+c1*dxd(i)));
phi2(2)=exp(-(x1(k,i)-1).^2/2).*exp(-(x2(k,i)-1).^2/2).*exp(-(ddxd(i)-1).^2/2).*exp(-(de2s(k,i)-1)^2/2).*exp(-(e3s(k,i)-1).^2/2).*exp(-(-c1-1).^2/2).*exp(-(-phi1(1)*dw1+c1*dxd(i)+c1*de1s(k,i)-1).^2/2);
phi2(3)=exp(-(x1(k,i)-2).^2/2).*exp(-(x2(k,i)-0).^2/2).*exp(-(ddxd(i)-0).^2/2).*exp(-(de2s(k,i)-0)^2/2).*exp(-(e3s(k,i)-0).^2/2).*exp(-(-c1-0).^2/2).*exp(-(-phi1(1)*dw1+c1*dxd(i)+c1*de1s(k,i)-0).^2/2);
phi2(4)=exp(-(x1(k,i)+1).^2/2).*exp(-(x2(k,i)+1).^2/2).*exp(-(ddxd(i)+1).^2/2).*exp(-(de2s(k,i)+1)^2/2).*exp(-(e3s(k,i)+1).^2/2).*exp(-(-c1+1).^2/2).*exp(-(-phi1(1)*dw1+c1*dxd(i)+c1*de1s(k,i)+1).^2/2);
phi2(5)=exp(-(x1(k,i)+2).^2/2).*exp(-(x2(k,i)+2).^2/2).*exp(-(ddxd(i)+2).^2/2).*exp(-(de2s(k,i)+2)^2/2).*exp(-(e3s(k,i)+2).^2/2).*exp(-(-c1+2).^2/2).*exp(-(-phi1(1)*dw1+c1*dxd(i)+c1*de1s(k,i)+2).^2/2);
phi2=phi2/sum(phi2);

dw2=1/(1-gama1)*(-gama1*x4(k,i)+gama1*x4(k-1,i)+beta1*z1(k,i)*phi1(2));
dw3=1/(1-gama1)*(-gama1*x5(k,i)+gama1*x5(k-1,i)+beta1*z1(k,i)*phi1(3));
dw4=1/(1-gama1)*(-gama1*x6(k,i)+gama1*x6(k-1,i)+beta1*z1(k,i)*phi1(4));
dw5=1/(1-gama1)*(-gama1*x7(k,i)+gama1*x7(k-1,i)+beta1*z1(k,i)*phi1(5));
dw6=1/(1-gama1)*(-gama1*x8(k,i)+gama1*x8(k-1,i)+beta2*z2(k,i)*phi2(1));
dw7=1/(1-gama1)*(-gama1*x9(k,i)+gama1*x9(k-1,i)+beta2*z2(k,i)*phi2(2));
dw8=1/(1-gama1)*(-gama1*x10(k,i)+gama1*x10(k-1,i)+beta2*z2(k,i)*phi2(3));
dw9=1/(1-gama1)*(-gama1*x11(k,i)+gama1*x11(k-1,i)+beta2*z2(k,i)*phi2(4));
dw10=1/(1-gama1)*(-gama1*x12(k,i)+gama1*x12(k-1,i)+beta2*z2(k,i)*phi2(5));
   end
%%
u=-z1(k,i)-c2*z2(k,i)-[x8(k,i) x9(k,i) x10(k,i) x11(k,i) x12(k,i)]*phi2;
dx1=x2(k,i);
dx2=-sin(x1(k,i))-x2(k,i)+(6-sin(x1(k,i)))*u;

end

end