Combination of X and Y vectors to get all possible positions on a Cartesian plane

35 views (last 30 days)
Dear Community,
I have a challenging task that I am not able to solve so far: I have a vector X of 'n' elements (in my case those are X coordinates) and I have another vector Y of 'm' elements (in my case Y coordinate). I just want to creat a new vector Z with n*m rows and 2 colums that lists within all possible combinations of points on the XY Cartesian plane.
Example:
X=1,2,3,4 (n=4)
Y=5,6 (m=2)
then Z= 1,5 1,6 2,5 2,6 3,5 3,6 and so on....

Accepted Answer

James Tursa
James Tursa on 20 May 2019
[XX,YY] = ndgrid(X,Y);
Z = [XX(:),YY(:)];
  1 Comment
Maximilian Arpaio
Maximilian Arpaio on 20 May 2019
Thanks a lot James.
Actually, surfing better among the already available answers (my fault sorry) I've also found:
[A,B] = meshgrid(X,Y);
c=cat(2,A',B');
Z=reshape(c,[],2);
coming from this post: LINK

Sign in to comment.

More Answers (1)

Jos (10584)
Jos (10584) on 21 May 2019
For two vectors, x and y, this might be faster than ndgrid (not tested)
xy = [repelem(x(:), numel(y), 1) repmat(y(:), numel(x), 1)]

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!