来自给定集合的组合没有重复

Dav*_*vid 4 matlab matrix

假设我有一个如下定义的矩阵

M = [C1 C2 C3 C4]
Run Code Online (Sandbox Code Playgroud)

在C是列向量的情况下,我想要一些有效的(即没有用于循环)生成A向量的方法

ResultVec = [C1 C2; 
             C1 C3; 
             C1 C4;
             C2 C3; 
             C2 C4; 
             C3 C4]
Run Code Online (Sandbox Code Playgroud)

提前致谢!

the*_*alk 10

那就是nchoosek:

M = [ 1 2 3 4 ];

R = nchoosek(M,2);
Run Code Online (Sandbox Code Playgroud)

收益:

R =

     1     2
     1     3
     1     4
     2     3
     2     4
     3     4
Run Code Online (Sandbox Code Playgroud)

我不知道这是不是你的意图,而是nchoosekMatlabs实现了n个元素的给定集合中的k组合的数量,没有重复(维基百科)

nchoosek尽管如此,该功能在性能方面并不是很有效.但是在File Exchange上有等价物,它们(!!)的速度更快,并且做得更好.


为了说清楚,它不仅适用于上面相当简单的例子,而且不会返回任何索引.它根据需要直接转换矩阵.

M = [ 21 42 123 17 ];
Run Code Online (Sandbox Code Playgroud)

收益:

R =

    21    42
    21   123
    21    17
    42   123
    42    17
   123    17
Run Code Online (Sandbox Code Playgroud)