我正在尝试使用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
怎么做 ?感谢
答案 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;