Julia 1.1 创建网格(网格中的点数组)

djo*_*rd1 5 grid julia

使用 Julia 1.1,我想基于范围向量创建点网格

\n\n

当使用这段代码时,它给了我一个这样的点的列表

\n\n
u = [[i j ] for i in -1:0.5:1, j in -1:0.5:1]\n[u...]\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,我无法开发一种更通用的方法,在给定范围数组时创建这样的多维点向量

\n\n

例如,开发一个 createGrid 函数,它将采用 n 个范围的向量作为参数并输出所有点的列表。

\n\n
createGrid([1.:0.5:0., 1.:0.5:0., 1.:0.5:0.])\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将输出:

\n\n
27-element Array{Array{Float64,2},1}:\n [-1.0 -1.0 -1.0]\n [-0.5 -1.0 -1.0]\n [0.0 -1.0 -1.0] \n [-1.0 -0.5 -1.0]\n [-0.5 -0.5 -1.0]\n [0.0 -0.5 -1.0] \n [-1.0 0.0 -1.0] \n [-0.5 0.0 -1.0] \n [0.0 0.0 -1.0]  \n [-1.0 -1.0 -0.5]\n [-0.5 -1.0 -0.5]\n [0.0 -1.0 -0.5] \n [-1.0 -0.5 -0.5]\n \xe2\x8b\xae               \n
Run Code Online (Sandbox Code Playgroud)\n\n

感谢您的任何建议

\n

Mic*_*ard 5

看一眼Iterators.product。它不会创建Arrays,而是创建一个对象,您可以迭代以获取网格的每个新元素作为 a Tuple(这实际上通常是您想要的)。

\n\n
julia> p = Iterators.product(-1.:0.5:0., -1.:0.5:0., -1.:0.5:0.);\njulia> println.(p);\n(-1.0, -1.0, -1.0)\n(-0.5, -1.0, -1.0)\n(0.0, -1.0, -1.0)\n(-1.0, -0.5, -1.0)\n(-0.5, -0.5, -1.0)\n(0.0, -0.5, -1.0)\n(-1.0, 0.0, -1.0)\n\xe2\x8b\xae  \n
Run Code Online (Sandbox Code Playgroud)\n