MATLAB程序中出现一下错误 5

:???InanassignmentA(I)=B,thenumberofelementsinBandImustbethesame.Errorin==>Untitled6a... :??? In an assignment A(I) = B, the number of elements in B and
I must be the same.
Error in ==> Untitled6 at 11
s(k)=C*x;
部分代码如下:
clear all;
close all;
A=[-5,0,0,1,0,0;0,-5,0,0,1,0;0,0,-5,0,0,1;-25,0,0,5,0,0;0,-25,0,0,5,0;0,0,-25,0,0,5];
B=[0,0,0;0,0,0;0,0,0;0.0327,0,0;0,0.4260,0;0,0,0.4260];
x=[0;0;0;0;0;0];
ts=0.001;
for k=1:1:2000
time(k)=k*ts;
q=10;ep=0.5;
C=[5,0,0,1,0,0;0,5,0,0,1,0;0,0,5,0,0,1];
s(k)=C*x;
M=2;
if M==1
u(k)=-inv(C*B)*(C*A*x-(1-q*ts)*s(k)+ep*ts*sign(s(k)));
elseif M==2 %Saturated function
delta=0.005;
kk=1/delta;
if s(k)>delta
sats=1;
elseif abs(s(k))<=delta
sats=kk*s(k);
elseif s(k)<-delta
sats=-1;
end
u(k)=-inv(C*B)*(C*A*x-(1-q*ts)*s(k)+ep*ts*sats);
end
x=A*x+B*u(k);
x1(k)=x(1);
x2(k)=x(2);
end
figure(1);
plot(time,x1,'r',time,x2,'b');
xlabel('time(s)');ylabel('x1,x2');
figure(2);
plot(time,s,'r');
xlabel('time(s)');ylabel('s');
figure(3);
plot(time,u,'r');
xlabel('time(s)');ylabel('u');
figure(4);
plot(x1,x2,'r',x1,-c*x1,'b');
xlabel('x1');ylabel('x2')
展开
 我来答
yanglei5658
2015-05-27 · TA获得超过4756个赞
知道大有可为答主
回答量:835
采纳率:100%
帮助的人:524万
展开全部

我只能说,你这个程序写的问题不少。最后结果对不对都不能够保证。

首先,对于

s(k)=C*x;

这句来说,

C的维度是3×6,x的维度是6×1,那么结果的维度是3×1,用s(k)这种一维变量不能存储二维变量,因此可以改为

s(:,k)=C*x;

表示s的每一列存储运算的结果,而一共的列数表示迭代的次数。

因此,程序中所有s(k)的地方都要修改。


其次,u(k)的计算也是同样的问题。可以把u(k)改成u(:,k)。

更多追问追答
追问
大神,能qq指导下吗?我照你说的改的,还是有错误
??? Undefined function or variable 'sats'.
Error in ==> Untitled1111 at 25
u(:,k)=-inv(C*B)*(C*A*x-(1-q*ts)*s(:,k)+ep*ts*sats);
追答
现在上不了qq,出现问题的时候,你把相关的变量都检查一下,看看是不是都有效
我行我素850915
2015-05-27 · TA获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1757万
展开全部
你程序的问题是:s(k)=C*x;语句中,C*x得到6个数,而要赋给s(k),而k=1:1:2000,两边数的个数不同,咋赋值?不是一对一的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式