dxsh 发表于 2007-2-19 15:13

求助:大家帮我看看程序哪里有问题啊?急啊!

下面是我参考一些资料编的模型参考自适应控制程序,可运行时出了错误,说?? In an assignment A(I) = B, the number of elements in B and
I must be the same.
Error in ==> d:\MATLAB6p1\work\adaptivelyaptesting.m
On line 23 ==> ym(k)=cm*Xm(1);到底问题在哪儿啊,大家帮我看看!谢谢!

Ap=[-9 -292;1 0];Bp=';
cp=;
Am=[-60 -1500;1,0];Bm=';
cm=;
Xm=;Xp=;
h=0.06;N=1000;
r1=sin(*h);
r0=-0.3*r1;
T1=.3;T2=.1;
K=0.1;dK=0;
F=[-0.1 0.4];dF=;
P=lyap(Am,eye(2))
for jj=1:10
for k=1:N
r=r0(k);
k0=Am*Xm+Bm*r;
k1=Am*(Xm+h*k0/2)+Bm*r;
k2=Am*(Xm+h*k1/2)+Bm*r;
k3=Am*(Xm+h*k2)+Bm*r;
Xm=Xm+h*(k0+2*k1+2*k2+k3)/6;
ym(k)=cm*Xm(1);
u=K*r+F*Xp;
k0=Ap*Xp+Bp*r;
k1=Ap*(Xp+h*k0/2)+Bp* u;
k2=Ap*(Xp+h*k1/2)+Bp*u;
k3=Ap*(Xp+h*k2)+Bp*u;
Xp=Xp+h*(k0+2*k1+2*k2+k3)/6;
yp(k)=cp*Xp(1);
e=Xp-Xm;
dK1=dK;
dK=T2*(Bm*K)'*P*e*r;
K=K+(dK+dK1)*h/2;
dF1=dF;
dF=T1*(Bm*K)'*P*e*Xp';
F=F+(dF+dF1)*h/2;
end
if jj==1
figure(1)
plot(*h,ym,'k-',*h,yp,'r:')
title('The response of the adaptive control system(start period)')
xlabel('t(second)'),ylabel('Amplitude')
end
end
figure(2)
plot(*h,ym,'k-',*h,yp,'r:')
title('The response of the adaptive control system(stop period)')
xlabel('t(second)'),ylabel('Amplitude')
e2=ym-yp;
figure(3)
plot(*h,e2,'k-')

eight 发表于 2007-2-19 16:31

ym(k)=cm*Xm(1);

cm 是一个1*2的矩阵,Xm 是一个2*1的矩阵,cm*Xm是合法的,但你写的显然不行。

建议这种简单的错误自己动手调试一下就可以了。

dxsh 发表于 2007-2-19 21:23

请eight主任帮我修正一下好吗?请问写的不行存在的问题是在哪里啊?但是如果把cm改成1×1的就可以啊?

eight 发表于 2007-2-20 00:29

原帖由 dxsh 于 2007-2-19 21:23 发表
请eight主任帮我修正一下好吗?请问写的不行存在的问题是在哪里啊?但是如果把cm改成1×1的就可以啊?


请根据矩阵相乘的规则和你的需要自行修改,这些外人是不能代劳的
页: [1]
查看完整版本: 求助:大家帮我看看程序哪里有问题啊?急啊!