2

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

A = [1, 3] 

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

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

指数 = [1, 1]

我正在使用 MATLAB R2012a

4

3 回答 3

3

你可以使用ismember

vec=ismember(A,B);

或者

vec=ismember(B,A)

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

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

获取索引位置

于 2013-01-20T05:54:03.270 回答
2

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

你可以尝试这样的事情:

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

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

希望能帮助到你

于 2013-01-20T17:01:21.777 回答
1

为了在矩阵中搜索向量的所有元素,您可以使用:ABbsxfun

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

这种比较忽略了矩阵的形状,B并将其视为一堆元素。在您的示例中,B10元素和A2,因此tmp是大小的二进制矩阵,10x2其中true任何地方B都等于 的元素A

要找到它的第一个元素B等于你的任何元素,A只需执行

idx = find( any( tmp, 2 ), 1, 'first' );

将线性索引idx转换为行列对B

[r c] = ind2sub( size(B), idx );

干杯!

于 2013-01-20T06:34:24.297 回答