错误消息索引超出矩阵维度

时间:2016-11-02 00:40:36

标签: matlab

使用此错误代码查看其他解决方案后,我无法找出此错误的解决方案。这些变量都在我的命令窗口中被清除,因此我没有任何干扰。输入>>后part2a(1.0,0.5,0.1,0.05)我收到错误信息。我假设随着我继续前进,其他部分将会遇到同样的问题。

指数超出矩阵维度。

part2a中的错误(第12行)     Y1(J + 1)= Y(j)+ H1 * X。;

function part2a(h1,h2,h3,h4)
t=0;
tf=10;
n1=(tf-t)/h1;
n2=(tf-t)/h2;
n3=(tf-t)/h3;
n4=(tf-t)/h4;
y=0;
x=(7.2*(sin(t))^2)-(0.208333*(1+y)^1.5);
for j=1:n1
    t(j+1)=t(j)+h1;
    y1(j+1)=y(j)+h1.*x;
end
for j=1:n2
    t(j+1)=t(j)+h2;
    y2(j+1)=y(j)+h2*x;
end
for j=1:n3
    t(j+1)=t(j)+h3;
    y3(j+1)=y(j)+h3*x;
end
for j=1:n4
    t(j+1)=t(j)+h4;
    y4(j+1)=y(j)+h4*x;
end
t1=0:h1:10;
t2=0:h2:10;
t3=0:h3:10;
t4=0:h4:10;
plot(t1,y1,t2,y2,t3,y3,t4,y4);
xlabel('Time in days');
ylabel('Change in depth of the tank in meters');
end

1 个答案:

答案 0 :(得分:0)

您的y=0;不会改变。它是一个标量,而不是矢量。所以当你执行y(2)时,你会得到错误,因为y(2)不存在。

根据您的评论,要让y存储最后一个值,可以在第一个循环中执行以下操作:

for j=1:n1
    t(j+1)=t(j)+h1;
    y1(j+1)=y+h1.*x;
    y = y1(end);
end