检查矢量元素对矩阵元素

时间:2013-01-20 05:52:09

标签: matlab vector matrix compare element

检查第一次出现的向量中的任何元素是否存在于矩阵中的正确方法是什么?例如,如果我有

A = [1, 3] 

B = [ 1, 2 ; 
      1, 4 ; 
      2, 3 ; 
      2, 4 ; 
      3, 4 ];

我应该得到一些东西,它返回满足这个条件的矩阵B的索引。所以我应该得到这个例子。

indx = [1,1]

我正在使用MATLAB R2012a

3 个答案:

答案 0 :(得分:3)

您可以使用ismember

vec=ismember(A,B);

vec=ismember(B,A)

取决于你想要的东西(A的元素在B中找到,反之亦然)。 那么你可以

[row col]=find(vec,1, 'first')

获取索引位置

答案 1 :(得分:2)

必须尝试在Matlab中使用strfind命令。

您可以尝试这样的事情:

res = strfind(B(:)',A)

这将给出B中A的所有出现。因此,第一次出现的是res(1)

希望有所帮助

答案 2 :(得分:1)

要在矩阵A中搜索向量B所有元素,您可以使用bsxfun

tmp = bsxfun( @eq, B(:), A );

此比较忽略B的矩阵形状,并将其视为一堆元素。在您的示例中,B包含10个元素,A包含2,因此tmp二进制矩阵,其大小为{{1} } 10x2只要true等于B的元素。

要查找A的第一个元素,其等于B任何元素,您只需执行

A

将线性索引idx = find( any( tmp, 2 ), 1, 'first' ); 转换为行对列转换为idx

B

干杯!