如何将n * 1矩阵转换为n * n对角矩阵

时间:2013-12-25 23:51:21

标签: r matrix

我有一个nx1矩阵我想将其转换为R

中的nxn对角矩阵

matrix transformation

3 个答案:

答案 0 :(得分:4)

如果您只是想知道如何在R中执行此操作,那就是:

my.matrix       <- matrix(0, nrow=4, ncol=4)
diag(my.matrix) <- rep(0.25, 4)

答案 1 :(得分:4)

正如@Ben Bolker建议的那样,您可以使用diag简单地定义您的身份矩阵:

my.matrix <- diag(0.25, 4)
my.matrix
##      [,1] [,2] [,3] [,4]
## [1,] 0.25 0.00 0.00 0.00
## [2,] 0.00 0.25 0.00 0.00
## [3,] 0.00 0.00 0.25 0.00
## [4,] 0.00 0.00 0.00 0.25

答案 2 :(得分:2)

在您的情况下,原始矢量包含相同的元素,只需将 n x n 标识矩阵乘以 0.25 即可评论建议。

但是具有不相同元素的向量的一般情况更有趣:

通过 v =(v_1,...,v_n)'表示 n x 1 列向量。 然后,将 n x n 矩阵 E_i 定义为其[i,i]元素中 1 的矩阵到处都是零。同时将 n x 1 列向量 e_i 定义为[i]位置(行中 1 的向量其他地方都是零。

然后 n x n 矩阵 V = diag (v_1,...,v_n)可以获得

V = Σ E_i v e_i ')

总和超过 i = 1,... n