MATLAB中越界错误 如何修正
clear;x1(1)=0.5;x2(1)=0.2;y1(1)=0.7;y2(1)=0.5;a=1.4;b=0.3;q=2;c1=0.5;c2=0.8;forn=1:10...
clear;
x1(1)=0.5;x2(1)=0.2;y1(1)=0.7;y2(1)=0.5;a=1.4;b=0.3;q=2;c1=0.5;c2=0.8;
for n=1:100;
e1(n)=q*y1(n)-x1(n);
e2(n)=q*y2(n)-x2(n);
u(n)=(-b*e1(n)-q+1+q*a*y1(n+1)*y1(n+1)-a*x1(n+1)*x1(n+1)+c1*(c1*z1(n)+z2(n))+c2*z2(n))/q;
x1(n+1)=x2(n)+1-a*x1(n)*x1(n);
x2(n+1)=b*x1(n);
y1(n+1)=y2(n)+1-a*y1(n)*y1(n);
y2(n+1)=b*y1(n)+u(n);
f(n)=c1*z1(n)-q+1+q*a*y1(n)*y1(n)-a*x1(n)*x1(n);
z1(n)=e1(n);
z2(n)=e2(n)-f(n);
end;
n=1:100;
figure(1);
semilogy(n,abs(e1(n)),'k',n,abs(e2(n)),':k');xlabel('n');ylabel('|e_i(n)|');
figure(2);
plot(x1(n),x2(n),'.k');
xlabel('x_1');ylabel('x_2');
axes('position',[0.1,0.3,0.5,0.5]);
plot(y1(n),y2(n),'.k');
xlabel('y_1');ylabel('y_2'); 展开
x1(1)=0.5;x2(1)=0.2;y1(1)=0.7;y2(1)=0.5;a=1.4;b=0.3;q=2;c1=0.5;c2=0.8;
for n=1:100;
e1(n)=q*y1(n)-x1(n);
e2(n)=q*y2(n)-x2(n);
u(n)=(-b*e1(n)-q+1+q*a*y1(n+1)*y1(n+1)-a*x1(n+1)*x1(n+1)+c1*(c1*z1(n)+z2(n))+c2*z2(n))/q;
x1(n+1)=x2(n)+1-a*x1(n)*x1(n);
x2(n+1)=b*x1(n);
y1(n+1)=y2(n)+1-a*y1(n)*y1(n);
y2(n+1)=b*y1(n)+u(n);
f(n)=c1*z1(n)-q+1+q*a*y1(n)*y1(n)-a*x1(n)*x1(n);
z1(n)=e1(n);
z2(n)=e2(n)-f(n);
end;
n=1:100;
figure(1);
semilogy(n,abs(e1(n)),'k',n,abs(e2(n)),':k');xlabel('n');ylabel('|e_i(n)|');
figure(2);
plot(x1(n),x2(n),'.k');
xlabel('x_1');ylabel('x_2');
axes('position',[0.1,0.3,0.5,0.5]);
plot(y1(n),y2(n),'.k');
xlabel('y_1');ylabel('y_2'); 展开
2个回答
展开全部
实现指定好矩阵的规格就行了(其实根本不用担心越界问题,matlab动态分配空间的, 我这里仅仅就问题论问题) 比如 你让 BW=ones(m,n) 就行了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询