您好,我刚开始使用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
我们要学习数字图像处理,先要了解什么叫图像。
一幅图像是由一个光学设备(如一个镜头、一个相机、一个镜子)对一个物体、一个人或一个场景所产生的视觉描述。这个描述是2维的,它只是对应现实3维世界中的一个投影面。
通俗来讲,一幅图像,就是我们摄像头拍下来的场景。