Julia中的循环和范围

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

当范围小于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(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]