下面是两个邻接矩阵。我必须找到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中完成?
答案 0 :(得分:3)
假设mat1
和mat2
分别是第一个和第二个矩阵,并且您希望找到对角线值的第一个匹配项,请尝试此操作 -
[~,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)