在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} = ...

相关内容

  • 没有找到相关文章

最新更新