1
    %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 的函数,r = 0 到 20 逐步使用 FOR 循环时为 0.5。V=(4/3)*pi*R3。这将需要 41 个循环。您需要为变量 r 和 v 分配内存。使用等式 r= -0.5 + i* 0.5 到在给定循环 i 的情况下找到 r。您需要使用适当的下标从上面更新 r 和 v 方程,以将 r 和 v 存储在每个循环中。为什么不直接从 0 到 40 做一个 for 循环,而不是这个 0.5 的增量?

4

2 回答 2

0

您不妨矢量化您的代码:

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

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

于 2012-09-19T17:17:48.810 回答
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  
于 2012-09-19T17:13:30.990 回答