File Exchange

image thumbnail

NCHOOSECRIT (V1.0 feb 2013)

version 1.0 (2.68 KB) by

returns those subsets (= combinations of elements of a set) that fulfill a specific criterion



View License

NCHOOSECRIT - subsets (combinations of elements of a set) that fulfill a criterion
W = NCHOOSECRIT(S, FUN) returns those combinations of one or more elements of the set S (called a subset) that fulfill a specific criterion.
This criterion is specified by the function FUN. FUN is a function handle to a function that takes one input argument and returns a logical scalar value.
W will be cell array of row vectors. Each cell of W holds one of the combinations C of S for which FH(C) is true.
In total, there are 2^N-1 possible subsets of S (N being the number of elements of S). This number grows rapidly with increasing N. W is a selection of those subsets.
S can be a cell array, and each cell of W will then contain a cell array.
       % find the subsets that sum op to 6
         nchoosecrit([1 2 3 4 5 6], @(x) sum(x)==6)
       % -> { [1 2 3], [2 4], [1 5], [6]}
       % find subgroups of 3 or more people that contain either James or Bob,
       % but not both!
         S = {'Bob' 'Tom' 'Joe' 'Bill' 'James'} ; % the whole group
       % criterion 1:
         fh1 = @(x) numel(x) >= 3 ;
       % criterion 2
         fhname = @(x,y) any(strncmp(y,x,numel(y))) ;
         fh2 = @(x) xor(fhname(x,'James'), fhname(x,'Bob')) ;
       % the 2 criterions combined:
         fhcomb = @(x) fh1(x) && fh2(x) ;
       W = nchoosecrit(S, fhcomb)
See also nchoosek, perms
             nchoose, combn, allcomb on the File Exchange

Comments and Ratings (2)


Marin (view profile)


MATLAB Release
MATLAB 7.12 (R2011a)

Inspired by: NCHOOSE

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video