MATLAB删除矩阵中特定参数以外的元素
我有一个有两个冒号[x,y]的矩阵。这些是抽样的数据。我必须删除超出范围的数据,从(x1,y1)到(x2,y2)的矩形中删除所有数据 对于我来说,移除向量中的数据不是问题,我使用: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 = 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,:);