Matlab 试图访问r(0);索引必须是正整数或逻辑整数
我有点困惑。我想这是在说,在我的数组中,没有这样的位置不是整数,但这个问题的方向明确地表示,在r=0到20的情况下,通过使用0.5的步骤,绘制一个球体的体积作为r的函数 一个FOR循环。V=4/3*pi*R3。这将需要41个循环。您需要分配 变量r和v的内存。使用方程r=-0.5+i*0.5来计算给定的r 环路i。您需要使用以下命令更新上面的r和v方程:Matlab 试图访问r(0);索引必须是正整数或逻辑整数,matlab,Matlab,我有点困惑。我想这是在说,在我的数组中,没有这样的位置不是整数,但这个问题的方向明确地表示,在r=0到20的情况下,通过使用0.5的步骤,绘制一个球体的体积作为r的函数 一个FOR循环。V=4/3*pi*R3。这将需要41个循环。您需要分配 变量r和v的内存。使用方程r=-0.5+i*0.5来计算给定的r 环路i。您需要使用以下命令更新上面的r和v方程: 在每个循环中存储r和v的适当下标。为什么不从0到40做一个for循环,而不是这个0.5的增量呢 如果您试图填充向量r,则可以使用在for循环外
在每个循环中存储r和v的适当下标。为什么不从0到40做一个for循环,而不是这个0.5的增量呢 如果您试图填充向量r,则可以使用在for循环外部初始化的计数器并递增每个循环
%ENGR 151 Lab 3 Part 3
clc
clear
disp('ENGR 151 Lab 3 Part 3')
disp('Solid Snake')
disp(' ')
r = ones(1,41)
v = ones(1,41)
for i = 0:0.5:20
r(i) = -.05 + round(i) * .05
v(i) = (4/3) * pi * r(i)^3
end
您不妨将代码矢量化:
cnt = 0;
for i = 0:0.5:20
cnt = cnt + 1; %increment at the beginning so any users of cnt get the 1-indexed value
r(cnt) = -.05 + round(i) * .05
v(cnt) = (4/3) * pi * r(cnt)^3
end
这将使您的代码更加优雅,并避免出现索引问题。正整数应该是足够的线索。。问题不在于使用i作为索引。。它只是解释了在0.5的步长下,每一步0到20应该有什么值,有多少步41个循环,以及在给定循环i的情况下使用r的公式。我很困惑,因为我用C编码,用C索引0就可以了。整个索引0让我非常失望,以至于我看不出我需要一个外部计数器来完成这项工作,并绕过0.5的增量。但矢量化我的代码似乎更好。明白了!我不知道下标是什么意思,我完全忘了我的老师说过索引从1开始,而不是像其他语言那样从0开始。谢谢guysYes,但这并没有按照要求使用for循环。如果用作答案,仍应提供答案的答案。
r = -0.05 + round(0:0.5:20) * 0.05;
v = (4/3) * pi * r .^3