Julia中的循环和范围
当范围小于1时,尝试在for循环中定义范围时,会出现错误 例如,以下代码:Julia中的循环和范围,julia,Julia,当范围小于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 报告以下错误:错误:BoundsError() 为什么会这样?正如StefanKarpinski所指出的,只接受整数的不是for循环(变量),而是数组索引。无法访问数组的0.15个元素 这个怎么样: x = range
i = linspace(0, 3, 200)
graph = zeros(length(i), 1)
for j in 0:0.015:3
graph[j] = j*cos(j^2)
end
报告以下错误:错误:BoundsError()
为什么会这样?正如StefanKarpinski所指出的,只接受整数的不是for循环(变量),而是数组索引。无法访问数组的0.15个元素 这个怎么样:
x = range(0, stop=3, length=200)
y = zeros(length(x))
for i = 1:length(x)
j = x[i]
y[i] = j*cos(j^2)
end
甚至:
x = range(0, stop=3, length=200)
y = zeros(length(x))
for (i, j) in enumerate(x)
y[i] = j * cos(j * j)
end
嗯,for循环占用了更多的空间,但并不清晰。请注意,什么是“朱利安”,但在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
其中*
或^
中的
表示您正在逐个元素应用方法/函数。
不知道为什么这是一个更快的。Julia专家可能想在这方面帮助我们。我不确定这段代码应该做什么,但是
j
从0开始,这不是一个有效的索引。下一个值是0.015
,这当然也不是有效的索引。@Stefan我想做的是从0到3计算函数f(x)=x*cos(x^2)
。我想将结果保存在200x1数组中,然后使用PyPlot
进行绘图。根据您所说的,我理解for
循环只接受整数。我想我必须使用linspace
@Echetlaeus:FYI做点什么,我认为你的问题没有反映出足够的努力(因此可能会被否决)。如果你在谷歌上搜索过BoundsError()的意思和/或读过Julia(或其他语言)中的for循环和range,那么问题就显而易见了。@cd98我同意你的说法。在过去的基础阶段,我曾使用过MATLAB和FORTRAN。这是我唯一的编程经验。@Oceanos:这也会起作用:x=linspace(0,3200);y=[j*cos(j^2)表示x中的j]