在matrix中查找给定的行
我在MATLAB有一个m乘n的matrix,说M。我有一个n元素的行向量,即一个乘n列matrix,说X. 
我知道X在M的某个地方。我怎样才能findM的索引?
编辑:
gnovice的build议比我更简单:
 [~,indx]=ismember(X,M,'rows') indx = 3 
第一个解决scheme:
 你可以很容易地使用find和ismember来做到这ismember 。 这是一个例子: 
 M=magic(4); %#your matrix M = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 X=[9 7 6 12]; %#your row vector find(ismember(M,X),1) ans = 3 
 在我得知ismember之前,我曾经这样做过: 
 index = find(all(bsxfun(@eq, M, X), 2)); 
 但是使用ismember(X, M, 'rows')绝对是可取的。 
另一个解决scheme返回每个X的行索引
 find(sum(abs(M-ones(rows(M),1)*X),2)==0) 
此外,这个解决scheme可以很容易地适应find在X的阈值以内的行如下(如果数字噪声是一个问题)
 tolerance = 1e-16; %setting the desired tolerance find(sum(abs(M-ones(rows(M),1)*X),2)<tolerance) 
这是一个非循环版本。 只有M(你的matrix)不是很大,也就是说, n和m都很小。 X是你的行:
 function ind = findRow(M,X) tmp = M - repmat(X,size(M,1),1); ind = find(tmp,1); end 
如果M太大,可能会更快,迭代M行,并将每一行与您的向量进行比较。
@编辑:重命名variables以匹配问题中使用的名称。