热线电话:13121318867

登录
2018-11-01 阅读量: 769
用R进行矩阵运算(2)

5数与矩阵相乘

A 为 m×n 矩阵,c>0,在 R 中求 cA 可用符号:“*”,例如:

> c=2

> c*A

[,1] [,2] [,3] [,4]

[1,] 2 8 14 20

[2,] 4 10 16 22

[3,] 6 12 18 24

6 矩阵相乘

A 为 m×n 矩阵,B 为 n×k 矩阵,在 R 中求 AB 可用符号:“%*%”,例如:

> A=matrix(1:12,nrow=3,ncol=4)

> B=matrix(1:12,nrow=4,ncol=3)

> A%*%B

[,1] [,2] [,3]

[1,] 70 158 246

[2,] 80 184 288

[3,] 90 210 330

若 A 为 n×m 矩阵,要得到 A'B,可用函数 crossprod(),该函数计算结果与 t(A)%*%B

相同,但是效率更高。例如:

> A=matrix(1:12,nrow=4,ncol=3)

> B=matrix(1:12,nrow=4,ncol=3)

> t(A)%*%B

[,1] [,2] [,3]

[1,] 30 70 110

[2,] 70 174 278

[3,] 110 278 446

> crossprod(A,B)

[,1] [,2] [,3]

[1,] 30 70 110

[2,] 70 174 278

[3,] 110 278 446

7 矩阵对角元素相关运算

例如要取一个方阵的对角元素,

> A=matrix(1:16,nrow=4,ncol=4)

> A

[,1] [,2] [,3] [,4]

[1,] 1 5 9 13

[2,] 2 6 10 14

[3,] 3 7 11 15

[4,] 4 8 12 16

> diag(A)

[1] 1 6 11 16

对一个向量应用 diag()函数将产生以这个向量为对角元素的对角矩阵,例如:

> diag(diag(A))

[,1] [,2] [,3] [,4]

[1,] 1 0 0 0

[2,] 0 6 0 0

[3,] 0 0 11 0

[4,] 0 0 0 16

对一个正整数 z 应用 diag()函数将产生以 z 维单位矩阵,例如:

> diag(3)

[,1] [,2] [,3]

[1,] 1 0 0

[2,] 0 1 0

[3,] 0 0 1

8 矩阵求逆

矩阵求逆可用函数 solve(),应用 solve(a, b)运算结果是解线性方程组 ax = b,

若 b 缺省,则系统默认为单位矩阵,因此可用其进行矩阵求逆,例如:

> a=matrix(rnorm(16),4,4)

> a

[,1] [,2] [,3] [,4]

[1,] 1.6986019 0.5239738 0.2332094 0.3174184

[2,] -0.2010667 1.0913013 -1.2093734 0.8096514

[3,] -0.1797628 -0.7573283 0.2864535 1.3679963

[4,] -0.2217916 -0.3754700 0.1696771 -1.2424030

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子