How do I plot 2 arrays against each other so that each row of the arrays corresponds to each data point

2 次查看(过去 30 天)
I have two arrays named XCoords and YCoords, each 6x4 and I would like them to be plotted so that each of the first rows are plotted against each other, then each of the second rows, etc.
clc
clear
x = 3;
y = 3;
Setupx = [0:x].';
Setupy = [0:y].';
X = [0 0 1 1 0 1];
Y = [0 1 1 0 0 1];
XCoords = X + Setupx
YCoords = Y + Setupy
plot(XCoords,YCoords)
xlim([-1 5])
ylim([-1 5])
When x is changed to 0, the correct output is given but is only for one row.

回答(1 个)

DGM
DGM 2022-11-15
编辑:DGM 2022-11-15
I'm not really sure what the correct output is supposed to be. If it's supposed to be crossed boxes in a diagonal,
x = 3;
y = 3;
xoffset = 1;
Setupx = [0:x].' * xoffset;
Setupy = [0:y].';
X = [0 0 1 1 0 1];
Y = [0 1 1 0 0 1];
XCoords = X + Setupx;
YCoords = Y + Setupy;
plot(XCoords.',YCoords.')
xlim([-1 5])
ylim([-1 5])
If the boxes are supposed to be stacked vertically, you can set the xoffset to 0 (or otherwise simplify the code).
  2 个评论
Oliver Rosenfield
Oliver Rosenfield 2022-11-15
Sorry no I meant like this:
I did this manually but I need it so that the code does however many rows and columns of boxes as x and y.
DGM
DGM 2022-11-15
I'm assuming you want them plotted as one curve per block, so:
% specify the number of blocks
nblocksx = 4;
nblocksy = 4;
% block offsets
osx = 0:nblocksx-1;
osy = 0:nblocksy-1;
[osx osy] = meshgrid(osx,osy);
% curve for one block
X = [0 0 1 1 0 1];
Y = [0 1 1 0 0 1];
% combine coordinates to form multiple curves
XCoords = X + osx(:);
YCoords = Y + osy(:);
plot(XCoords.',YCoords.')
xlim([-1 5])
ylim([-1 5])

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Array Geometries and Analysis 的更多信息

标签

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by