从矩阵删除行给出的ID- Matlab的(Delete row from matrix given

2019-10-21 16:24发布

如何从依赖于第一列值矩阵中删除某一行?

例如: A=[1 2 3;3 4 5;5 6 7]其中,所述第一列的值表示ID和欲删除具有5作为ID的行。 我已经知道, A(3,:)=[]删除第三行,但如果我有ID和不知道的行数?

Answer 1:

您可以使用find

id=5;
A(find(A(:,1)==id),:)=[]
A =

 1     2     3
 3     4     5

需要注意的是,如提及Divakar ,由于逻辑索引你甚至可以省略find

A(3,:)

A(logical([0 0 1]),:)

是等价如此

A(find(A(:,1)==id),:)=[]

A(A(:,1)==id,:)=[]

会给出相同的结果。



Answer 2:

如果你只有为元素id ,那么我会去@ yoh.lej的解决方案 。 但是,如果你碰巧有元素的数组id ,您可以使用下面列出的方法之一。

方法一(有ismember

A(ismember(A(:,1),ids),:) = [];

方法2(带bsxfun

A(any(bsxfun(@eq,A(:,1),ids(:)'),2),:) = [];

如果第一列中A具有独特ids ,那么你必须玩两个方法。

方法#3(带intersect

[~,remove_rowid] = intersect(A(:,1),ids);
A(remove_rowid,:) = [];

办法#4(带setdiff

[~,select_rowid] = setdiff(A(:,1),ids,'stable');
A = A(select_rowid,:);


文章来源: Delete row from matrix given an id- Matlab