如果我有一个= [1 2 3 4; 2 3 4 0; 1 1 3 4; 0 0 0 1]并且我想找到至少包含3个元素[1 2 3 4]的行,例如第1,2,3行。我该怎么办? 提前谢谢
答案 0 :(得分:4)
使用bsxfun
,如下所示:
a=[1 2 3 4;5 6 7 1;2 3 1 7;3 1 1 2]; % matrix
v = [1 2 3]; % desired values
ind = find(all(any(bsxfun(@eq, a, reshape(v,1,1,[])), 2), 3));
这会将v
重塑为第三维(reshape(v,1,1,[])
),并将a
的所有值与v
(bsxfun(@eq, ...)
)的所有值进行比较。然后
它选择行的索引(find(...)
),以便所有期望值(all(..., 3)
)出现在该行的任何条目中(any(..., 2)
)。
要查找数组v
中至少包含三个元素的行索引,可以将每行对应的计数求和,然后执行检测:
n = 3
ind = find(sum(any(bsxfun(@eq, a, reshape(v,1,1,[])), 2), 3)>=n)