All possible combinations of 2 vectors.
Afficher commentaires plus anciens
Hi everyone.
I have one vector and one number. For example [1 3 5] and 0.
How do I generate all possible combinations? Like this:
0 3 5
1 0 5
1 3 0
0 0 5
0 3 0
1 0 0
0 0 0
Réponse acceptée
Plus de réponses (3)
Andrei Bobrov
le 22 Nov 2012
Modifié(e) : Andrei Bobrov
le 22 Nov 2012
variant
t = [1 3 5];
ii = perms([t, zeros(size(t))]);
out = unique(sort(t(:,1:numel(t)),2),'rows');
or
t = [1 3 5];
out = [];
n = numel(t);
for jj = 1:n
k = nchoosek(t,n - jj);
out = [out;[zeros(size(k,1),jj),k]];
end
or
k = ones(1,numel(t)) * 2.^(numel(t)-1:-1:0)';
out = bsxfun(@times,t,dec2bin(0:k - 1,numel(t))-'0');
1 commentaire
Matt Fig
le 23 Nov 2012
Very nice! (The last one)
Azzi Abdelmalek
le 22 Nov 2012
Modifié(e) : Azzi Abdelmalek
le 23 Nov 2012
save this function
function y=arrangement(v,n)
m=length(v);
y=zeros(m^n,n);
for k = 1:n
y(:,k) = repmat(reshape(repmat(v,m^(n-k),1),m*m^(n-k),1),m^(k-1),1);
end
then type
x=arrangement([1 3 5 0],3)
out=x(~all(x,2),:)
If you don't need repetition add
s=arrayfun(@(t) sort(out(t,:)),(1:size(out,1))','un',0)
out1=unique(cell2mat(s),'rows')
t=[1 3 5];
n=length(t);
result = bsxfun(@times, [1,3,5], dec2bin(2^n-1:-1:0)-'0')
Catégories
En savoir plus sur Argument Definitions dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!