Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 两个不同但相关的MATLAB数组/矩阵中的子集_Arrays_Matlab_Matrix_Subset - Fatal编程技术网

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 Well
x>=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')