Daniel@0: function sub_s=subsets1(s,k) Daniel@0: % SUBSETS1 creates sub-sets of a specific size from a given set Daniel@0: % SS = subsets1(S, k) Daniel@0: % Daniel@0: % S is the given set Daniel@0: % k is the required sub-sets size Daniel@0: % Daniel@0: % Example: Daniel@0: % Daniel@0: % >> ss=subsets1([1:4],3); Daniel@0: % >> ss{:} Daniel@0: % ans = Daniel@0: % 1 2 3 Daniel@0: % ans = Daniel@0: % 1 2 4 Daniel@0: % ans = Daniel@0: % 1 3 4 Daniel@0: % ans = Daniel@0: % 2 3 4 Daniel@0: % Daniel@0: % Written by Raanan Yehezkel, 2004 Daniel@0: Daniel@0: if k<0 % special case Daniel@0: error('subset size must be positive'); Daniel@0: elseif k==0 % special case Daniel@0: sub_s={[]}; Daniel@0: else Daniel@0: l=length(s); Daniel@0: ss={}; Daniel@0: if l>=k Daniel@0: if k==1 % Exit condition Daniel@0: for I=1:l Daniel@0: ss{I}=s(I); Daniel@0: end Daniel@0: else Daniel@0: for I=1:l Daniel@0: ss1=subsets1(s([(I+1):l]),k-1); Daniel@0: for J=1:length(ss1) Daniel@0: ss{end+1}=[s(I),ss1{J}]; Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: sub_s=ss; Daniel@0: end