声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1365|回复: 3

[编程技巧] 求助:大家帮我看看程序哪里有问题啊?急啊!

[复制链接]
发表于 2007-2-19 15:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
下面是我参考一些资料编的模型参考自适应控制程序,可运行时出了错误,说?? 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=[1 0]';
cp=[9 292];
Am=[-60 -1500;1,0];Bm=[1,0]';
cm=[1,20];
Xm=[0;0];Xp=[0;0];
h=0.06;N=1000;
r1=sin([1:N]*h);
r0=-0.3*r1;
T1=.3;T2=.1;
K=0.1;dK=0;
F=[-0.1 0.4];dF=[0 0];
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([1:N]*h,ym,'k-',[1:N]*h,yp,'r:')
title('The response of the adaptive control system(start period)')
xlabel('t(second)'),ylabel('Amplitude')
end
end
figure(2)
plot([1:N]*h,ym,'k-',[1:N]*h,yp,'r:')
title('The response of the adaptive control system(stop period)')
xlabel('t(second)'),ylabel('Amplitude')
e2=ym-yp;
figure(3)
plot([1:N]*h,e2,'k-')
回复
分享到:

使用道具 举报

发表于 2007-2-19 16:31 | 显示全部楼层
ym(k)=cm*Xm(1);


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

建议这种简单的错误自己动手调试一下就可以了。
 楼主| 发表于 2007-2-19 21:23 | 显示全部楼层
请eight主任帮我修正一下好吗?请问写的不行存在的问题是在哪里啊?但是如果把cm改成1×1的就可以啊?
发表于 2007-2-20 00:29 | 显示全部楼层
原帖由 dxsh 于 2007-2-19 21:23 发表
请eight主任帮我修正一下好吗?请问写的不行存在的问题是在哪里啊?但是如果把cm改成1×1的就可以啊?



请根据矩阵相乘的规则和你的需要自行修改,这些外人是不能代劳的
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-30 21:46 , Processed in 0.063691 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表