arrays - 选择第一列值在列表中至少出现一次的行

标签 arrays matlab matrix any

假设:

A = [1,22,33; 2,44,55; 2,66,77]
id = [2 3 5]

如果第一列的值在 id 中至少出现一次,我尝试选择所有矩阵 A 行,而不使用循环。

因此,从以下位置开始:

A =

 1    22    33
 2    44    55
 2    66    77

在这个例子中我想得到以下内容:

2    44    55
2    66    77

有什么更简单的方法可以做到这一点? 非常感谢。

最佳答案

使用ismember创建将选择行的逻辑索引:

A(ismember(A(:,1), id),:)

或者,您可以使用anybsxfun(@eq, ...)而不是 ismember:

A(any(bsxfun(@eq, A(:,1).', id(:)), 1), :)

或者,从 Matlab R2016b 版本开始,您可以将 bsxfun(@eq, ...) 替换为 ==,这要归功于 implicit singleton expansion :

A(any(A(:,1).'==id(:), 1), :)

关于arrays - 选择第一列值在列表中至少出现一次的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41701603/

相关文章:

python - 从特征匹配估计基本矩阵或基本矩阵

php - 使用 PHP 中的特定字符串代码将价格转换为字符串

python - 如何在相当大的项目中使用 Python/NumPy?

matlab - 如何在MATLAB中编写相对路径?

java - 在java中按角度和轴旋转 vector

reporting-services - Reporting Services - 有条件地隐藏矩阵列

javascript - 如何将数组的每个元素变成平方根并将它们相加

c++ - 在 C/C++ 中将数组拆分为 block

在c中将1d数据转换为3d的c代码

matlab - 警告 : "Parethesize the multiplication of ' D' and its transpose to ensure the result is Hermetian.“