MATLAB删除特定参数矩阵中的元素
MATLAB Delete element in a matrix out of specific parameters
我有一个包含两个冒号 [x, y] 的矩阵。这些是抽样的数据。我必须删除超出范围的数据,从 (x1, y1) 到 (x2, y2) 的矩形之外的所有数据。
对我来说删除向量中的数据不是问题,我使用:
X = X(X > x1);
X = X(X < x2);
Y = Y(Y > y1);
Y = Y(Y < y2);
但是这个解决方案不起作用,因为没有删除所有外部值,即我不能写 X = X(Y > y1)
。
现在,我知道这个问题可以用一个简单的 for 循环来解决,但我认为在 Matlab 环境中有不止一种像我这样的解决方案(只适用于向量,不适用于矩阵)。
谢谢,再见,
贾科莫
X = data(:,1);
Y = data(:,2);
mask = (X>x1 & X<x2).*(Y>y1 & Y<y2);
X = X.*mask;
Y = Y.*mask;
X(X==0)=[];
Y(Y==0)=[];
通过这种方式,我只获取矩形内部的数据。
只需创建一个将所有解决方案封装在一起的逻辑掩码,然后索引到您的点数组中。假设 data
存储你的两列数据,你可以简单地做:
X = data(:,1);
Y = data(:,2);
ind = X > x1 & X < x2 & Y > y1 & Y < y2;
points = data(ind,:);
我有一个包含两个冒号 [x, y] 的矩阵。这些是抽样的数据。我必须删除超出范围的数据,从 (x1, y1) 到 (x2, y2) 的矩形之外的所有数据。
对我来说删除向量中的数据不是问题,我使用:
X = X(X > x1);
X = X(X < x2);
Y = Y(Y > y1);
Y = Y(Y < y2);
但是这个解决方案不起作用,因为没有删除所有外部值,即我不能写 X = X(Y > y1)
。
现在,我知道这个问题可以用一个简单的 for 循环来解决,但我认为在 Matlab 环境中有不止一种像我这样的解决方案(只适用于向量,不适用于矩阵)。
谢谢,再见, 贾科莫
X = data(:,1);
Y = data(:,2);
mask = (X>x1 & X<x2).*(Y>y1 & Y<y2);
X = X.*mask;
Y = Y.*mask;
X(X==0)=[];
Y(Y==0)=[];
通过这种方式,我只获取矩形内部的数据。
只需创建一个将所有解决方案封装在一起的逻辑掩码,然后索引到您的点数组中。假设 data
存储你的两列数据,你可以简单地做:
X = data(:,1);
Y = data(:,2);
ind = X > x1 & X < x2 & Y > y1 & Y < y2;
points = data(ind,:);