假设:
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),:)
或者,您可以使用any
和 bsxfun(@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/