根据matlab中两个矩阵的对角元素匹配两个矩阵

时间:2014-06-10 09:49:58

标签: arrays matlab matrix

下面是两个邻接矩阵。我必须找到matrix1的哪一行对应于matrix2中的哪一行,具体取决于对角线值。在下面的例子中

1st row=1st row(diagonal value=4)

2nd row=5th row(diagonal value=5)

3rd row=4th row(diagonal value=1)

4th row=2nd row(diagonal value=3)

5th row=3rd row(diagonal value=2)

 4     4     1     3     2
 4     5     1     3     2
 1     1     1     1     1
 3     3     1     3     2
 2     2     1     2     2

 4     3     2     1     4
 3     3     2     1     3
 2     2     2     1     2
 1     1     1     1     1
 4     3     2     1     5

如何在matlab中完成?

2 个答案:

答案 0 :(得分:3)

假设mat1mat2分别是第一个和第二个矩阵,并且您希望找到对角线值的第一个匹配项,请尝试此操作 -

[~,ind] = max(bsxfun(@eq,diag(mat2),diag(mat1)'))

[~,ind] = max(bsxfun(@eq,diag(mat1),diag(mat2)'),[],2)

如果您确定始终存在唯一匹配,则也可以使用find -

[ind,~] = find(bsxfun(@eq,diag(mat2),diag(mat1)'))

答案 1 :(得分:3)

使用ismember的第二个输出:

[~, result] = ismember(diag(matrix1), diag(matrix2))

在您的示例中,返回

result =
     1
     5
     4
     2
     3