如何从向量创建矩阵

时间:2014-12-26 18:54:59

标签: r

我有一个矩阵mydata。我把它当成了

ev <- eigen(mydata)

               [,1]                    [,2]                    [,3]                    [,4]                    [,5]            [,6]
[1,] -0.44852453+0i  0.11670674-0.43102606i  0.11670674+0.43102606i  0.02678808-0.00239041i  0.02678808+0.00239041i  0.013711630+0i
[2,] -0.40701659+0i  0.17265390+0.01329737i  0.17265390-0.01329737i  0.32050237+0.31677316i  0.32050237-0.31677316i -0.946287625+0i
[3,] -0.65381971+0i  0.35662142+0.31807798i  0.35662142-0.31807798i -0.83423480+0.00000000i -0.83423480+0.00000000i -0.265152784+0i
[4,] -0.37545331+0i -0.72987261+0.00000000i -0.72987261+0.00000000i -0.00637960-0.10181135i -0.00637960+0.10181135i  0.004667737+0i
[5,] -0.05763717+0i  0.02473111+0.01282302i  0.02473111-0.01282302i -0.00818839+0.03180396i -0.00818839-0.03180396i  0.122647730+0i
[6,] -0.24778175+0i  

如果结果没有排序,我得到对应于最大特征值的最大特征向量:

k <- which(abs(ev$values)==max(abs(ev$values)))
G<-ev$vectors[,k]

[1] -0.44852453+0i -0.40701659+0i -0.65381971+0i -0.37545331+0i -0.05763717+0i -0.24778175+0i

调用此最大特征向量

G = [g 1 , G 2 ...G ñ ] Ť

因此,在这种情况下,G = [-0.44852453 + 0i -0.40701659 + 0i -0.65381971 + 0i -0.37545331 + 0i -0.05763717 + 0i -0.24778175 + 0i,其中n = 6

我的问题是,我想从这个特征向量构建一个比率矩阵,这样 B = {bij = gi / gj}。 R中是否有一个函数可以做到这一点?如果不是什么是最简单的方法来获得矩阵没有循环? {抱歉,我不知道如何在这个界面中显示数学符号。那应该是,矩阵B =条目b(sub ij)= g(sub i)/ g(sub j),g是G的成员}

1 个答案:

答案 0 :(得分:2)

我认为这与特征值无关,您只想从向量创建矩阵B,其中B[i,j] = G[i]/G[j]用于向量G

这可以通过outer函数实现,该函数生成外部产品但允许您指定函数。

G <- 1:4
outer(G, G, FUN='/')
##      [,1] [,2]      [,3] [,4]
## [1,]    1  0.5 0.3333333 0.25
## [2,]    2  1.0 0.6666667 0.50
## [3,]    3  1.5 1.0000000 0.75
## [4,]    4  2.0 1.3333333 1.00