W = nchoose(S) returns all possible combinations of 0, 1, or more
    elements of the set S, having N elements.  There are 2^N combinations
    in total.  W is a cell array and each cell holds one of these
    combination (as a row vector). 
    S can be a cell array, and each cell of W will then contain a cell
    array. W is the powerset of S, as it includes the empty set (0
    elements) as it first cell.
 
    For a vector of integers I, W = nchoose(S, I) returns only the sets
    indicated by the indices I. This might be useful for large sets.
 
    Examples:
       nchoose([2 4 6 8])
         % -> { [] ;
         %      [2] ; 
         %      [4] ; 
         %      [2 4] ; 
         %      [6] ;
         %      ...
         %      [2 6 8] ;
         %      [4 6 8] ;
         %      [2 4 6 8]} ; % in total 16 different combinations
  
       nchoose([33 22 11], [1 8 4]) 
         % -> { [] ; [33 22 11] ; [ 33 11]}
 
    Notes: 
    - For sets containing more than 18 elements a warning is given, as this
      can take some time.  Hit Ctrl-C to intterupt calculations.
    - If S contain non-unique elements (e.g. S = [1 1 2]), nchoose will
      return non-unique cells. In other words, nchoose treats all elements
      of S as being unique. One could use nchoose(UNIQUE(S)) to avoid that.
    - Loosely speaking, nchoose(S) collects all output of multiple calls to
      NCHOOSEK(S, K) where K is looping from 1 to the number of elements of
      S. The implementation of nchoose, however, does rely of a different
      method and is much faster than such a loop.
    - For more information, see: http://en.wikipedia.org/wiki/Power_set
    
    See also nchoosek, perms, 
             permn, nchoose2, allcomb on the file Exchange
Cite As
Jos (10584) (2025). nchoose (https://uk.mathworks.com/matlabcentral/fileexchange/20011-nchoose), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Acknowledgements
Inspired: nchoosecrit(S, FUN)
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
