Arrays 两个不同但相关的MATLAB数组/矩阵中的子集
我有两个包含笛卡尔坐标的矩阵:Arrays 两个不同但相关的MATLAB数组/矩阵中的子集,arrays,matlab,matrix,subset,Arrays,Matlab,Matrix,Subset,我有两个包含笛卡尔坐标的矩阵: [x,y] = meshgrid(1:100,1:100); plot(x,y,'o') 我希望以这样一种方式对这些矩阵进行子集划分,即移除这些坐标的矩形子集。我不确定如何最好地指定从何处获取子集。让我们假设矩形的边界框是rect=[30 40 50 60],已格式化[左上右下] 我尝试分别对每个矩阵进行子集划分,但这会移除比我希望的更多的坐标,并且不会给出我正在寻找的结果矩形“孔”: ax = x(x<30 | x>50); ay = y(y<
[x,y] = meshgrid(1:100,1:100);
plot(x,y,'o')
我希望以这样一种方式对这些矩阵进行子集划分,即移除这些坐标的矩形子集。我不确定如何最好地指定从何处获取子集。让我们假设矩形的边界框是rect=[30 40 50 60]代码>,已格式化[左上右下]
我尝试分别对每个矩阵进行子集划分,但这会移除比我希望的更多的坐标,并且不会给出我正在寻找的结果矩形“孔”:
ax = x(x<30 | x>50);
ay = y(y<40 | y>60);
plot(ax,ay,'o')
当我尝试子集时,我无法获取我的x
和y
坐标:
[cutout.x, cutout.y] = coords((coords(:,1)<30 & coords(:,2)<40) | (coords(:,1)>50 & coords(:,2)>60));
Indexing cannot yield multiple results.
对于x
和y
,可以使用遮罩将边界框内的点设置为NaNs
,这些点不会显示在绘图中-
[x,y] = meshgrid(1:100,1:100);
mask = x>=30 & x<=50 & y>=40 & y<=60
x(mask) = nan;
y(mask) = nan;
plot(x,y,'o')
[x,y]=meshgrid(1:100,1:100);
mask=x>=30&x=40&yIt绝对是,非常感谢!我以前见过掩蔽是以这种方式使用的——在考虑两个或多个矩阵或数组之间的关系时,您能否详细说明它是如何进行子集的?@luser Wellx>=30&x=40&y
cutout = coords((coords(:,1)<30 & coords(:,2)<40) | (coords(:,1)>50 & coords(:,2)>60));
cutout = [30:50;40:60]';
result = setdiff(coords,cutout,'rows');
plot(result(:,1), result(:,2), 'o')
[x,y] = meshgrid(1:100,1:100);
mask = x>=30 & x<=50 & y>=40 & y<=60
x(mask) = nan;
y(mask) = nan;
plot(x,y,'o')