MATLAB Answers

osman
0

Using ALLCOMB for unknown number of vectors

Asked by osman
on 18 Sep 2019
Latest activity Commented on by Jos (10584)
on 19 Sep 2019
Hello There!
I have N number of vectors recorded into workspace. I need to perform combination among themselves by using allcomb. How could I introduce the vectors into the command (allcomb) in the form of B = ALLCOMB(A1,A2,A3,...,AN).
Thanks inadvance....

  3 Comments

Adam
on 18 Sep 2019
How are your n vectors stored? If they are each in their own variable then what is wrong with just literally adding them all as input arguments as in the function signature?
My variables are dynamic. the number of variables is continuously changing. I can not write them as you said. I have to define a set of variable like B = ALLCOMB(A1,A2,A3,...,AN). I do not know how to do this.
READ THE RESPONSE BY BRUNO. Learn how to use cell arrays instead of dynamically naming your variables. Numbered variables is a terrible programming style, that if you continue to follow it, will continuously lead you into problems, just as you are having now.

Sign in to comment.

1 Answer

Answer by Bruno Luong
on 18 Sep 2019

Create a CELL array, and get rid of the method of naming your variables with number 1,2,....
C = {A1, A2, A3, ..., AN}
B = allcomb(C{:});

  14 Comments

Do you understand when I wrote:
"They compule two different things."
% Example
U=bsxfun(@plus,(1:2),[0:2:6]')
% Your's
Your1 = allcomb(U(1,:),U(2,:),U(3,:),U(4,:))
% Your again
C=cell(size(U,1),1);
for k = 1:size(U,1)
C{k}=eval('U(k,:)');
end
Your2 = allcomb(C{:})
% Jos's
C = mat2cell(U, size(U,1), ones(1,size(U,2)));
Jos = allcomb(C{:})
% Bruno's
C = mat2cell(U, ones(1,size(U,1)), size(U,2));
Bruno = allcomb(C{:})
Thanks so much! I really appreciate about what you made me recognize.
Thanks Bruno, for correcting me, and thereby helping osman :-)

Sign in to comment.