Filter löschen
Filter löschen

create a vector ,of sets of predefined numbers stored in another row vectors

1 Ansicht (letzte 30 Tage)
Guys,I have two row vectors X=[3:6] and Y=[8:27].I want to create and store all possible combinations of (X,Y) in another vector ,say Z.
So my Z will be, Z=[(3,8) (3,9) (3,10)...(3,27) (4,8) (4,9)......(6,26) (6,27)]

Akzeptierte Antwort

Guillaume
Guillaume am 3 Mär. 2015
This is called the Cartesian product of the two sets.
A fairly straightforward way is to use ndgrid:
x = 3:6;
y = 8:27;
[xx, yy] = ndgrid(x, y);
cartprod = [xx(:) yy(:)]
This works also for more than two vectors:
x = 3:6;
y = 8:27;
z = 2:2:8;
[xx, yy, zz] = ndgrid(x, y, z);
cartprod = [xx(:) yy(:) zz(:)]
  3 Kommentare
Ace_ventura
Ace_ventura am 3 Mär. 2015
Just one more thing. I want to extract 3rd set i.e. (5,8)..however when i tried cartprod(3),it gives me 5. I want to obtain that set value i.e. 5 and 8

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

James Tursa
James Tursa am 3 Mär. 2015
Bearbeitet: James Tursa am 3 Mär. 2015
Not sure how you want the answer actually stored (the syntax in your example isn't clear), but here is one way:
XX = repmat(X(:)',numel(Y),1);
YY = repmat(Y(:),1,numel(X));
Z = [XX(:) YY(:)];

Kategorien

Mehr zu Multidimensional Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by