Combinations from a given set without repetition

前端 未结 2 1962
心在旅途
心在旅途 2020-12-21 05:21

Suppose I have a matrix defined as follows

M = [C1 C2 C3 C4]

Where the C\'s are column vectors I want some efficient (i.e. no for loops) wa

2条回答
  •  暖寄归人
    2020-12-21 05:38

    That is, what nchoosek does:

    M = [ 1 2 3 4 ];
    
    R = nchoosek(M,2);
    

    returns:

    R =
    
         1     2
         1     3
         1     4
         2     3
         2     4
         3     4
    

    I don't know if it's your intention but nchoosek is Matlabs implementation of The number of k-combinations from a given set S of n elements without repetition (Wikipedia)

    The function nchoosek is performance wise not very efficient though. But there are equivalents on File Exchange, which are much(!!) faster and doing the same.


    Just to make it clear, it's not just working for the fairly simple example above, and is not returning any indices. It directly transforms the matrix as desired.

    M = [ 21 42 123 17 ];
    

    returns:

    R =
    
        21    42
        21   123
        21    17
        42   123
        42    17
       123    17
    

提交回复
热议问题