【发布时间】:2020-06-26 09:46:51
【问题描述】:
我正在尝试在 Julia 中模拟 3D 随机游走,以此来学习 Julia 编程的技巧。我定义了所有变量,然后初始化了一个 (n_steps X 3) 零数组,我想在步行时使用它来存储我的坐标。这里,“n_steps”是walk的步数,三列分别对应x、y、z坐标。当我尝试使用新坐标更新数组时,出现错误:
错误:LoadError:BoundsError:尝试访问索引 [0, 1] 处的 100×3 Array{Float64,2}
我不明白为什么会出现此错误。据我所知,我正在遍历数组的所有行并更新 x、y 和 z 坐标。我从未提及索引 0,因为我指定循环从代码中的第 1 行开始。到底是怎么回事?到目前为止,这是我的代码(我还没有绘制,因为如果不解决这个问题我就无法继续前进):
using Plots
using Random
len_step = 1
θ_min, θ_max = 0, pi
ϕ_min, ϕ_max = 0, 2 * pi
n_steps = 100
init = zeros(Float64, n_steps, 3)
for jj = 1:1:length(init)
θ_rand = rand(Float64)* (θ_max - θ_min)
ϕ_rand = rand(Float64)* (ϕ_max - ϕ_min)
x_rand = len_step * sin(θ_rand) * cos(ϕ_rand)
y_rand = len_step * sin(θ_rand) * sin(ϕ_rand)
z_rand = len_step * cos(θ_rand)
init[jj, 1] += init[jj-1, 1] + x_rand
init[jj, 2] += init[jj-1, 2] + y_rand
init[jj, 3] += init[jj-1, 3] + z_rand
end
print(init)
如果相关,我将在 Windows 10 的 64 位上运行 Julia 版本 1.4.2。非常感谢任何帮助。谢谢。
【问题讨论】:
-
如果您想获得 Julia 的任何性能优势,请确保将耗时的代码放入函数中。见docs.julialang.org/en/latest/manual/performance-tips
标签: arrays julia indexoutofboundsexception