【发布时间】:2017-11-06 19:25:03
【问题描述】:
我在matlab中使用这个函数来查找矩阵A中两个值的索引匹配矩阵B中的两个值:
[~, ind] = ismember(A(:, [1 2]), B(:, [1 2]), 'rows');
但是,我得到一些值 0 作为输出返回。
这是否意味着矩阵 B 中的某些值对不存在于矩阵 A 中?
【问题讨论】:
-
你读过documentation吗?文档中通过示例很好地解释了这一点。
我在matlab中使用这个函数来查找矩阵A中两个值的索引匹配矩阵B中的两个值:
[~, ind] = ismember(A(:, [1 2]), B(:, [1 2]), 'rows');
但是,我得到一些值 0 作为输出返回。
这是否意味着矩阵 B 中的某些值对不存在于矩阵 A 中?
【问题讨论】:
阅读文档部分,MATLAB 的文档非常丰富。检查以下示例:
A = [1 2 3; 4 5 6; 7 -9 0] ;
B = [3 4 5 ; 1 2 3 ] ;
[Lia, Locb] = ismember(A,B, 'rows')
Lia =
1
0
0
Locb =
2
0
0
结果,Lia 是合乎逻辑的,而 Locb 是双重的。 Lia 给出了 A 中的逻辑索引,它们是 A 和 B 中的公共行。(在示例中,A [1 2 3] 中的第一行是常见的),因此逻辑索引将是 [1 0 0]'。 Locb 给出了 B 中公共行的索引/位置。(这里是公共行 [1 2 3],这发生在 B 的第二行)所以结果是 [2 0 0]'。
在您的情况下,您说结果 ind 为零,因此没有公共行。
【讨论】: