我正在寻找一种在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:3
和2: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} = ...
中