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

时间:2012-09-19 17:03:40

标签: matlab

    %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  

我有点困惑。我想这就是说我的阵列中没有这样的位置不是一个整数,但是这个问题的方向特别指出“将r = 0到20的r的函数绘制为r的函数0.5使用 一个FOR循环。 V =(4/3)* pi * R3。这将需要41个循环。你需要分配 变量r和v的存储器。使用等式r = -0.5 + i * 0.5来找到给定的r 循环我。您需要更新上面的r和v方程式 适当的下标在每个循环中存储r和v。“为什么不从0 - 40而不是这个.5增量进行for循环?

2 个答案:

答案 0 :(得分:0)

如果你试图填充向量r,那么你可以使用在for循环之外初始化的计数器并递增每个循环

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  

答案 1 :(得分:0)

您也可以对代码进行矢量化:

r = -0.05 + round(0:0.5:20) * 0.05;
v = (4/3) * pi * r .^3  

这将使您的代码更加优雅,并避免您在那里遇到索引问题。