Azzera filtri
Azzera filtri

all possible combinations of three vectors

34 visualizzazioni (ultimi 30 giorni)
I am trying to find all possible combinations of three vectors (A,B,C). For this, I tried using combvec. However, the result gets me a 1281x1 double, while i expected a matrix of 546*33*649 possibilities.
What i would like to get is:
A: 1,5,6,9,12
B: 1,2,3,4,5,6
C: 3,18,27,69,72
Ans:
1,1,3
1,1,18
1,1,27
etc.
So how do i do this?

Risposta accettata

Guillaume
Guillaume il 24 Mag 2017
One possible way, which doesn't require any toolbox:
[ca, cb, cc] = ndgrid(A, B, C);
combs = [ca(:), cb(:), cc(:)]
  5 Commenti
Abdelmajid Ben yahya
Abdelmajid Ben yahya il 22 Apr 2021
Hi,
I have an additional question, if i may.
Is it possible to get all combinations that fulfil a certain constraint? Let's say that within the combination A+B+C<=4.
Thank you.
Bruno Luong
Bruno Luong il 22 Apr 2021
Just filter out those are not meet the constraints, or you can use this FEX to get directly the combination
allVL1(3,4,'<=')
ans =
0 0 0
0 0 1
0 1 0
1 0 0
0 0 2
0 1 1
0 2 0
1 0 1
1 1 0
2 0 0
0 0 3
0 1 2
0 2 1
0 3 0
1 0 2
1 1 1
1 2 0
2 0 1
2 1 0
3 0 0
0 0 4
0 1 3
0 2 2
0 3 1
0 4 0
1 0 3
1 1 2
1 2 1
1 3 0
2 0 2
2 1 1
2 2 0
3 0 1
3 1 0
4 0 0

Accedi per commentare.

Più risposte (1)

Azzi Abdelmalek
Azzi Abdelmalek il 24 Mag 2017
A=[1,5,6,9,12]
B= [1,2,3,4,5,6]
C= [3,18,27,69,72]
[ii,jj,kk]=meshgrid(A,B,C);
ii=permute(ii,[1 3 2]);
jj=permute(jj,[2 1 3])
kk=permute(kk,[3 2 1])
out=[ii(:) jj(:) kk(:)];

Categorie

Scopri di più su Sequence and Numeric Feature Data Workflows in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by