当我尝试在范围小于1时在for循环中定义范围时,我得到错误。
例如以下代码:
i = linspace(0, 3, 200)
graph = zeros(length(i), 1)
for j in 0:0.015:3
graph[j] = j*cos(j^2)
end
报告以下错误:ERROR: BoundsError()
为什么?
答案 0 :(得分:6)
就像StefanKarpinski所说的那样,for循环(变量)不仅仅是整数,而是数组索引。您无法访问数组的第0.15个元素。
这个怎么样:
x = linspace(0, 3, 200)
y = zeros(length(x))
for i = 1:length(x)
j = x[i]
y[i] = j*cos(j^2)
end
甚至:
x = linspace(0, 3, 200)
y = zeros(length(x))
for (i, j) in enumerate(x)
y[i] = j * cos(j * j)
end
答案 1 :(得分:4)
恕我直言,for循环需要更多空间而不是更清晰。请注意确定的内容" julianic",但在python世界中,我认为大多数人会选择列表:
tic()
x = linspace(0, 3, 200)
y = [j*cos(j*j) for j in x]
toc()
elapsed time: 0.014455408 seconds
我的眼睛更好,速度更快:
tic()
x = linspace(0, 3, 200)
y = x.*cos(x.^2)
toc()
elapsed time: 0.000600354 seconds
.
或.*
中的.^
表示您按元素应用方法/功能元素。
不知道为什么这个更快。朱莉娅专家可能想帮助我们。