如何查找矩阵中的哪一行具有在数组中输入的指定设置值?
例如;
A = [4 5 6 7;
8 4 5 6;
4 5 6 8;
8 4 8 9;
1 2 2 4;
5 3 4 6];
,我想找出向量为[4 5 6 8]
的行
答案 0 :(得分:1)
您可以结合使用all
和find
...
具有隐式扩展(R2016b或更高版本)
find( all( A == [4 5 6 8], 2 ) )
等效地,您可以使用bsxfun
(与所有MATLAB版本兼容)
find( all( bsxfun( @eq, A, [4 5 6 8] ), 2 ) )
在两种情况下,您的示例3
的输出均为A
。
答案 1 :(得分:0)
假设顺序很重要,我会去@Wolfie's approach。
另一种可能性是使用ismember
。当订单很重要或不重要时,都可以使用此功能。让
A = [4 5 6 7; 8 4 5 6; 4 5 6 8; 8 4 8 9; 1 2 2 4; 5 3 4 6];
v = [4 5 6 8];
如果订单很重要:
result = find(ismember(A, v, 'rows'));
如果顺序无关紧要:
result = find(all(ismember(A, v), 2));