找到对称矩阵的非对角元素中的最大绝对值

时间:2012-04-02 16:53:38

标签: r linear-algebra

我想在R中的对称矩阵中找到非对角线元素中最大绝对值的位置和值。

例如,使用这个小的3x3:

 matrix(c(99,11,-21, 11,99,13, -21,13,99), nrow = 3, ncol=3, byrow=TRUE)

       [,1] [,2] [,3]
 [1,]   99   11  -21
 [2,]   11   99   13
 [3,]  -21   13   99

我想知道-21为值,1,3或3,1为位置

除了“蛮力”之外,还有什么方法可以做到这一点吗?

由于 PS

3 个答案:

答案 0 :(得分:5)

在编程方面,总是很难知道别人认为是什么“暴力”。也就是说,对于方形矩阵(此处命名为M),您可以执行以下操作:

m <- M
diag(m) <- NA

(mmax <- max(abs(m), na.rm=TRUE))
# [1] -21

which(abs(m) == mmax, arr.ind=TRUE)
#      row col
# [1,]   3   1
# [2,]   1   3

答案 1 :(得分:2)

x <- matrix(c(99,11,-21, 11,99,13, -21,13,99), nrow = 3, ncol=3, byrow=TRUE)
diag(x) <- NA
which(abs(x) == max(abs(x),na.rm=T), arr.ind=TRUE)

答案 2 :(得分:0)

#create matrix
m <- matrix(c(99,11,-21, 11,99,13, -21,13,99), nrow = 3, ncol=3, byrow=TRUE) 
#remove diagonal
diag(m) <- 0

#find locations of max absolute value using norm
which(abs(m) == norm(m,type="m"),arr.ind=TRUE)
     row col
[1,]   3   1
[2,]   1   3