我想从矩阵中删除一组特定的元素(列)。我该怎么办?
Input: A = [1 2 1; 4 5 4; 7 8 7]
B = [1; 4; 7;] or say A(:,1)
Output: A = [2 1; 5 4; 8 7]
我尝试使用该命令setdiff(A,A(:,1))
,但没有得到预期的结果。
这里可以提出三种方法。
1)setdiff
基于-
A = setdiff(A.',B.','rows').'
2)ismember
基于-
A = A(:,~ismember(A.',B.','rows'))
3)bsxfun
基于-
A = A(:,~all(bsxfun(@eq,A,B)))
如果您希望只删除A
与匹配的第一列,而不是删除所有的列匹配项,则B
有两种方法。
1)ismember
基于-
A(:,find(ismember(A.',B.','rows','legacy'),1))=[]
2)bsxfun
基于-
A(:,find(all(bsxfun(@eq,A,B)),1))=[]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句