Get n numbers from a list

I know there is a function nchoosek, however is there any way to do this without using this particular command since we aren't allowed to use it yet?
For example, [1,2,3,4] and we need to take 3 numbers at time. The results should be [1 2 3] [1 2 4] [1 3 4] [2 3 4]

 Accepted Answer

Binary approach (however, it might get slow for large numbers of element in x)
%vectorized method of this approach might be a little faster
x=[1 2 3 4];
y=[];
for i=1:2^numel(x)-1
if nnz(dec2bin(i,numel(x))=='1')==3
y=[x(dec2bin(i,numel(x))=='1'); y];
end
end
y
y = 4×3
1 2 3 1 2 4 1 3 4 2 3 4

More Answers (0)

Categories

Products

Release

R2022a

Tags

Asked:

on 17 Apr 2022

Answered:

on 17 Apr 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!