Matlab |试图访问x(0); index必须是正整数或逻辑

时间:2018-05-21 11:12:29

标签: matlab

我正在尝试使用matlab为我的hemowork制作代码,但我已经有了这个错误Attempted to access x(0); index must be a positive integer or logical. 所以这是我的代码:

Ax=0;
Ay=1.5;
Bx=40;
By=0;
Cx=0;
Cy=-1.5;
for t = 0:0.01:1
  x(t)=((1-t).^2)*Ax+2*t*(1-t)*Bx+(t.^2)*Cx;
   y(t)=((1-t).^2)*Ay+2*t*(1-t)*By+(t.^2)*Cy; 
end

如果我改变t = 1:1:100代码工作的值,但我需要这个值't = 0:0.01:1 怎么做 ?感谢

1 个答案:

答案 0 :(得分:1)

注意,MATLAB中的索引从1开始。你试图将索引保持为0,因此错误突然出现。如果要从0开始,则定义另一个变量并沿此变量的索引运行循环。检查以下代码:

Ax=0;
Ay=1.5;
Bx=40;
By=0;
Cx=0;
Cy=-1.5;
t = 0:0.01:1 ;
for i = 1:length(t)
    x(i)=((1-t(i)).^2)*Ax+2*t(i)*(1-t(i))*Bx+(t(i)^2)*Cx;
    y(i)=((1-t(i)).^2)*Ay+2*t(i)*(1-t(i))*By+(t(i)^2)*Cy;
end

正如您在MATLAB中一样,请注意,您可以对代码进行矢量化。一旦理解了MATLAB的基础知识,就可以尝试对代码进行矢量化。

%% Vectorized
x=((1-t).^2).*Ax+2*t.*(1-t)*Bx+(t.^2)*Cx;
y=((1-t).^2).*Ay+2*t.*(1-t)*By+(t.^2)*Cy;