在 MATLAB 中生成可变数量向量的所有组合

generate all combinations of a variable number of vectors in MATLAB

我正在寻找一种生成矩阵的方法,该矩阵包含 MATLAB 中的所有向量组合,如下所示

>> combvec(1:3,2:4)

ans =

     1     2     3     1     2     3     1     2     3
     2     2     2     3     3     3     4     4     4

正如我们所见,上面的例子给出了两个向量,即1:32:4。然而,如果我们有一个可变数量的向量,例如,v1,v2,...vn其中n没有给出),那么如何生成所有的组合呢?

例如,给定 v1,v2,...vn,是否有任何方法可以生成与 combvec(v1,v2,...vn) 相同的结果,但无需写下所有 n 向量(因为 n 可能是数量很大,每次都不同)?

如果作为参数传递,您可以使用 mycell{:} 解压单元格;单元格的每个元素都将被解释为一个新参数:

v1 = [1,2,3];
v2 = [2,3,4];
v3 = [3,4,5];

% We put everything in a cell
v = {v1,v2,v3};

% We unpack our cell into combvec
combvec(v{:})

当然这个例子没什么用,但在实际情况下,您可以简单地将向量直接存储在单元格中 v{ii} = ...