Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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
MATLAB删除矩阵中特定参数以外的元素_Matlab_Matrix_Logical Operators - Fatal编程技术网

MATLAB删除矩阵中特定参数以外的元素

MATLAB删除矩阵中特定参数以外的元素,matlab,matrix,logical-operators,Matlab,Matrix,Logical Operators,我有一个有两个冒号[x,y]的矩阵。这些是抽样的数据。我必须删除超出范围的数据,从(x1,y1)到(x2,y2)的矩形中删除所有数据 对于我来说,移除向量中的数据不是问题,我使用: X = X(X > x1); X = X(X < x2); Y = Y(Y > y1); Y = Y(Y < y2); X=X(X>x1); X=X(Xy1); Y=Y(Yy1) 现在,我知道这个问题可以用一个简单的循环来解决,但我认为在Matlab环境中有不止一个像我这样的解决方案(它只适

我有一个有两个冒号[x,y]的矩阵。这些是抽样的数据。我必须删除超出范围的数据,从(x1,y1)到(x2,y2)的矩形中删除所有数据

对于我来说,移除向量中的数据不是问题,我使用:

X = X(X > x1);
X = X(X < x2);
Y = Y(Y > y1);
Y = Y(Y < y2);
X=X(X>x1);
X=X(Xy1);
Y=Y(Y
但此解决方案不起作用,因为它不会删除所有外部值,即我无法写入
X=X(Y>y1)

现在,我知道这个问题可以用一个简单的循环来解决,但我认为在Matlab环境中有不止一个像我这样的解决方案(它只适用于向量,不适用于矩阵)

谢谢你,再见, 贾科莫

X=数据(:,1);
Y=数据(:,2);

mask=(X>x1&Xy1&Y只需创建一个逻辑掩码,将所有解决方案封装在一起,然后索引到您的点阵列中。假设
data
存储了两列数据,您只需执行以下操作:

X = data(:,1);
Y = data(:,2);
ind = X > x1 & X < x2 & Y > y1 & Y < y2;
points = data(ind,:);
X=数据(:,1);
Y=数据(:,2);
ind=X>x1&Xy1&Y
您的代码比我的代码更完美,性能也更出色。谢谢。格雷齐!我不会这么说!您确实找到了答案……我只是发现使用逻辑索引更容易。最后,无论您喜欢什么,这都是您应该使用的!
X = data(:,1);
Y = data(:,2);
ind = X > x1 & X < x2 & Y > y1 & Y < y2;
points = data(ind,:);