下标索引必须是实数正整数或逻辑错误

时间:2013-11-18 10:31:45

标签: matlab

Q2。 (30分)作为沿直线移动的身体的时间(t)的函数的位置d由下式给出:

            d(t)= ‒ 0.2t4+0.5t3+15t-80 meters

粒子的速度v(t)由d(t)相对于t的导数确定,加速度a(t)由v(t)相对于t的导数确定。 使用您现有的数学知识导出粒子的速度和加速度的表达式,并将位置,速度和加速度的曲线图作为时间的函数,0≤t≤10s,增量为0.1 s,类似于以下屏幕截图。使用subplot命令在同一页面上绘制三个图,顶部位置图,中间速度图和底部加速度图。使用正确的单位适当标记轴。

你可以帮我解决这个问题吗?

我写道:

 t=1:0.1:10

然后:

 d(t)=-0.2*t.^4+0.5*t.^3+15*t-80

但我说:

  

下标索引必须是实数正整数或逻辑。

这是什么意思?

1 个答案:

答案 0 :(得分:5)

正如错误所述,t必须是整数或逻辑。

但你的t是t=1:0.1:10,因此是十进制值。

你可以写(请注意,.*也是必要的)

d = -0.2.*t.^4+0.5.*t.^3+15.*t-80

您将获得一个适当的置换向量d到您的时间向量t


原因是你想要赋值给d,这需要索引,这是真正的正整数。 因此,尽管不是必需的,您可以创建索引向量:

idx_t = 1:numel(t); 

并指定d,如:

d(idx_t) = -0.2.*t.^4+0.5.*t.^3+15.*t-80


第二种情况,当索引向量是逻辑的时,它就像一个掩码。

e.g。

mask = logical( [1 0 1 0 1 0 1 0 1 0] );
t_new = t(mask);

会删除矢量t的每一秒值。