Julia中的FOR循环和范围

Ech*_*eus 1 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
Run Code Online (Sandbox Code Playgroud)

报告以下错误: ERROR: BoundsError()

这是为什么?

use*_*730 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
Run Code Online (Sandbox Code Playgroud)

甚至:

x = linspace(0, 3, 200)
y = zeros(length(x))

for (i, j) in enumerate(x)
  y[i] = j * cos(j * j)
end
Run Code Online (Sandbox Code Playgroud)

  • @Oceanos:这也可以:`x = linspace(0,3,200); y = [j*cos(j ^ 2)表示j中的j]` (3认同)

cd9*_*d98 6

恕我直言,for 循环占用更多空间而不是更清晰。请注意什么被认为是“julianic”,但在 python 世界中,我认为大多数人会去理解列表:

tic()
x = linspace(0, 3, 200)
y = [j*cos(j*j) for j in x]
toc()

elapsed time: 0.014455408 seconds
Run Code Online (Sandbox Code Playgroud)

对我来说更好更快的是:

tic()
x = linspace(0, 3, 200)
y = x.*cos(x.^2)
toc()

elapsed time: 0.000600354 seconds
Run Code Online (Sandbox Code Playgroud)

其中.in.*.^表示您正在逐个元素地应用方法/函数。不知道为什么这是一个更快。Julia 专家可能想在这方面帮助我们。