如何删除在Matlab的指定列中矩阵A与矩阵B具有相等值的那些行?

杰普索米

我在Matlab A和B中有两个矩阵,它们的列数相等,但行数不同。B中的行数也小于A中的行数。B实际上是A的子集。

在A的第1列和第2列的值等于矩阵B的第1列和第2列的值的情况下,如何有效地从A中删除这些行?

目前,我正在这样做:

for k = 1:size(B, 1)
     A(find((A(:,1) == B(k,1) & A(:,2) == B(k,2))), :) = [];
end

Matlab抱怨这是低效的,我应该尝试使用any,但是我不确定如何使用它any有人可以帮我这个忙吗?=)

我试过了,但是不起作用:

A(any(A(:,1) == B(:,1) & A(:,2) == B(:,2), 2), :) = [];

它抱怨以下内容:

Error using  == 
Matrix dimensions must agree.

我想要的例子:

在此处输入图片说明

在此处输入图片说明

结果中的AB表示B的行已从A中删除。AC也是如此。

蓝色

尝试使用setdiff例如:

c=setdiff(a,b,'rows')

注意,如果顺序很重要,请使用:

c = setdiff(a,b,'rows','stable')

编辑:阅读编辑后的问题和对该答案的评论,setdiff您所寻找的特定用法是(如Shai所注意到的):

[temp c] = setdiff(a(:,1:2),b(:,1:2),'rows','stable')
c = a(c,:)

替代解决方案:

您可以使用ismember

a(~ismember(a(:,1:2),b(:,1:2),'rows'),:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何选择列中具有相等值的行

选择列具有相等值的行的分区

Pandas Dataframe 根据具有相等值的两列删除行

计算两个指定列中具有相等值的行数

从具有相等值的几个数据框中删除行

在 Matlab 中对矩阵中的连续相等值重新编号

如何选择列中具有相等值的线并保持此特性

列中的相等值

如何合并列表中具有相等值的字典并串联不相等的值?

如何合并具有相等值的单元格

在不同的字段中查找具有相等值的记录?

在laravel查询构建器中选择具有2列相等值的行

SQL查询选择具有2列相等值的行

熊猫-在迭代中使用具有相等值的行中的值

Pandas Groupby比较Excel中带有子行的2列中的计数相等值

mySQL:如何过滤其他表中没有相等值的列?

如何按Excel或GSheet中第二列的值对第一列中具有相等值的列表进行排序?

MySQL-计算具有相等值的行,但仅当名称出现在其他列中时

在mysql上指定一个最多具有两个相等值的字段

MySQL“大于”条件有时返回具有相等值的行

如何编写 Rails SQL 查询以查找所有子项具有相等值的对象

根據唯一條目拆分具有相等值的行的值

在mysql中找到三个以上具有相等值的列

查询优化以匹配具有相等值的节点

Javascript:具有明显相等值的断言导致不同

如何使用 ngrx 和 typescript 连接具有相等值的属性上的列表项

在列表中查找某些属性具有相等值的对象

在窗口函数中对具有相等值的行进行计数

在矩阵中删除具有负值的列