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

조회 수: 3(최근 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
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])

댓글을 달려면 로그인하십시오.

태그

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by