Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 试图访问r(0);索引必须是正整数或逻辑整数_Matlab - Fatal编程技术网

Matlab 试图访问r(0);索引必须是正整数或逻辑整数

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=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循环外部初始化的计数器并递增每个循环

    %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