首页 > 解决方案 > MATLAB | 试图访问 x(0);索引必须是正整数或逻辑

问题描述

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

标签: matlab

解决方案


请注意,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;

推荐阅读