如何从不等长的向量生成 Julia 中所有可能的样本路径

How to generate all possible sample paths in Julia from vectors of unequal length

我有 5 个向量 t1,...,t5,它们的长度分别不等 n1, .. ,n5。我如何在 Julia 中生成一个 (n1*...*n5)x(5) 矩阵,它是:

您可能正在寻找的是 Iterators.product,尽管它不会生成您所请求的内容

julia> n1, n2, n3, n4, n5 = 2, 3, 4, 5, 6;

julia> a = Iterators.product(1:n1, 1:n2, 1:n3, 1:n4, 1:n5)
Base.Iterators.ProductIterator{NTuple{5,UnitRange{Int64}}}((1:2, 1:3, 1:4, 1:5, 1:6))

julia> first(a)
(1, 1, 1, 1, 1)

julia> reduce(vcat, a)
600-element Array{NTuple{5,Int64},1}:
 (1, 1, 1, 1, 1)
 (2, 1, 1, 1, 1)
 (1, 2, 1, 1, 1)
 (2, 2, 1, 1, 1)
....

它不会创建您请求的 Matrix,但大多数时候您会生成类似的 Matrix 以将其用于其他用途。在这种情况下,这样更好,因为它避免了分配临时矩阵。

@BogumiłKamiński 在下面的评论中写道,您可以通过

从对象中获得一个矩阵(尽管与示例中的顺序不完全相同)
julia> reduce(vcat, reduce.(hcat,  a))
720×5 Array{Int64,2}:
 1  1  1  1  1
 2  1  1  1  1
 1  2  1  1  1
...

这可能不是人们首先想到的事情,但很好地完成了工作。