检查第一次出现的向量中的任何元素是否存在于矩阵中的正确方法是什么?例如,如果我有
A = [1, 3]
和
B = [ 1, 2 ;
1, 4 ;
2, 3 ;
2, 4 ;
3, 4 ];
我应该得到一些东西,它返回满足这个条件的矩阵 B 的索引。所以对于我应该得到的例子。
指数 = [1, 1]
我正在使用 MATLAB R2012a
你可以使用ismember
:
vec=ismember(A,B);
或者
vec=ismember(B,A)
取决于你想要什么(A的元素在B中找到,反之亦然)。然后你可以
[row col]=find(vec,1, 'first')
获取索引位置
必须尝试strfind
在 Matlab 中使用命令。
你可以尝试这样的事情:
res = strfind(B(:)',A)
这将给出 A 在 B 中的所有出现。所以,第一次出现将是res(1)
希望能帮助到你
为了在矩阵中搜索向量的所有元素,您可以使用:A
B
bsxfun
tmp = bsxfun( @eq, B(:), A );
这种比较忽略了矩阵的形状,B
并将其视为一堆元素。在您的示例中,B
有10
元素和A
有2
,因此tmp
是大小的二进制矩阵,10x2
其中true
任何地方B
都等于 的元素A
。
要找到它的第一个元素B
等于你的任何元素,A
只需执行
idx = find( any( tmp, 2 ), 1, 'first' );
将线性索引idx
转换为行列对B
[r c] = ind2sub( size(B), idx );
干杯!