matlab:从第一个匹配的列值中查找行的索引
假设我有一个矩阵matlab:从第一个匹配的列值中查找行的索引,matlab,Matlab,假设我有一个矩阵 >> m = magic(3) m = 8 1 6 3 5 7 4 9 2 假设我有一个向量,包含列的第一个元素的子集 >> v = [3 4] v = 3 4 是否有任何函数可用于从列的第一个元素查找行的索引?我的意思是-- ? 如果没有,那么最好的方法是什么?看起来我知道了-- 可能有更好的方法,我不确定。很好地使用了ismember!:)我唯
>> m = magic(3)
m =
8 1 6
3 5 7
4 9 2
假设我有一个向量,包含列的第一个元素的子集
>> v = [3 4]
v =
3 4
是否有任何函数可用于从列的第一个元素查找行的索引?我的意思是--
?
如果没有,那么最好的方法是什么?看起来我知道了--
可能有更好的方法,我不确定。很好地使用了
ismember
!:)我唯一的建议是把i
做成一个矩阵,如i=[i',i',i']
。这样你就可以使用I(ismember(m,v))
,你可以同时使用m
中的任何元素。find(any(any)(bsxfun(@eq,m(:,1),v),2))
或find(ismember(m(:,1),v))
?@Divakar这很酷@ramgorur我想你可以编辑你删除的答案并在那里添加代码。
>> rows = row_index_from_col(m, 1, v)
rows =
2 3
m = magic(3)
v = [3 4]
[~,c] = size(m)
i = 1:c
i(ismember(m(:,1),v))