Code covered by the BSD License  

Highlights from

5.0 | 1 rating Rate this file 5 Downloads (last 30 days) File Size: 3.03 KB File ID: #23080 Version: 1.0




Returns combinations of a set of numeric or cell vectors (uses a memory-efficient algorithm)

| Watch this File

File Information

C = COMBINATIONS(V1, V2, V3, ...Vn) returns the set of combinations formed by taking the first element from vector V1, the second element from vector V2, the third from vector V3, and so on.

    C is a KxN matrix, where K is the total
    number of combinations, and N is the number
    of (non-empty) input vectors.

    V1, V2, ... Vn can be either numeric or cell arrays.

C = COMBINATIONS(V1, V2, V3, ...Vn, CLASSNAME) specifies that all the numeric vectors have numeric type CLASSNAME (e.g., 'int8', 'single').


c = combinations(1:5, 1:2)
c = combinations(1:5, 1:2, 'int8')
c = combinations(0:1,0:1,0:1,0:1,0:1,0:1,0:1,0:1,0:1,'int8');
c = combinations({'aa','bb'}, 1:3)
c = combinations({'aa','bb'}, {[1 2] [4 5 6]}, [true false])

MOTIVATION (in the spirit of reducing FileEx redundancy and clutter)

There are other FileExchange entries for calculating combinations:
  ALLCOMB (Filex# 10064)
  SETPROD (FileEx# 5898)
  CARTPROD (FileEx# 5475)

This implementation differs in two ways.

1) It allows combination of arbitrary cell arrays, and mixtures of cell and numeric arrays.

2) It use a memory-efficient algorithm that does not use intermediate matrices; furthermore, when CLASSNAME is specified, the specified numeric datatype is used consistently (there is no internal conversion from 'double'). This efficiency is relevant when the input consists of many small vectors or a few very large vectors.


This file inspired V Choose K.

MATLAB release MATLAB 7 (R14)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (3)
01 Jul 2015 Carsten

Exactly what I needed!

09 Oct 2009 Gautam Vallabha

Germán, Your comment is rather cryptic. Can you elaborate? Also, search the FileExchange for "combinations nchoosek". Some of the existing entries, like COMBINATOR (#24325), may fit your requirement.

Comment only
07 Oct 2009 GERMÁN

NEED possible combinations of GROUPS OF 16 DIGITS [ a b c ! l t s 0 1 e o i]

Comment only

Contact us