For loop Julia中nxd矩阵循环的一般嵌套

For loop Julia中nxd矩阵循环的一般嵌套,for-loop,julia,nested-loops,For Loop,Julia,Nested Loops,我想在Julia中编写一个函数,它接受一个nxd数值矩阵,其中N是数据点的数量,d是参数的数量: 沿着我能做的每个维度提取最小值和最大值 用户指定的离散化级别,例如下例中的1.0 返回一个矩阵M x d,其中包含所有组合,请参见下面的M说明。 作为一个d=5的简单示例,我采用了第1部分的结果,其中我获得了沿每个维度的最小值和最大值 minX = [ -1.0 -0.5 -1.1 -1.0 -0.9] maxX = [3.8 2.5 1.8 3.1 2.3] test=[minX[

我想在Julia中编写一个函数,它接受一个nxd数值矩阵,其中N是数据点的数量,d是参数的数量:

沿着我能做的每个维度提取最小值和最大值 用户指定的离散化级别,例如下例中的1.0 返回一个矩阵M x d,其中包含所有组合,请参见下面的M说明。 作为一个d=5的简单示例,我采用了第1部分的结果,其中我获得了沿每个维度的最小值和最大值

minX = [ -1.0  -0.5  -1.1  -1.0  -0.9]
maxX = [3.8  2.5  1.8  3.1  2.3]
test=[minX[i]:1.0:maxX[i] for i in 1:5]
我特意采取了一个1.0大小的粗糙步骤。我的问题是,我如何能够系统地循环测试,而不需要做5个for循环,这样我就可以得到离散化后的所有组合,这将产生一个大小为mxd的矩阵,其中


存在一个迭代笛卡尔积集的隐藏函数

R = Iterators.product(test...)
size(R) # (5, 4, 3, 5, 4)
然后,您所需要的就是垂直连接R中的元素。它可以是R上的单个循环来填充预先分配的数组,或者更简洁地说

[map(transpose ∘ collect, R)...;] # 1200 * 5 matrix

存在一个迭代笛卡尔积集的隐藏函数

R = Iterators.product(test...)
size(R) # (5, 4, 3, 5, 4)
然后,您所需要的就是垂直连接R中的元素。它可以是R上的单个循环来填充预先分配的数组,或者更简洁地说

[map(transpose ∘ collect, R)...;] # 1200 * 5 matrix

谢谢,这正是我想要的!谢谢,这正是我想要的!