首页 > 编程语言 > 详细

R语言的一些矩阵运算

时间:2016-03-27 15:27:47      阅读:373      评论:0      收藏:0      [点我收藏+]

1,创建矩阵

matrix (data = NA, nrow = 1, ncol = 1, byrow =FALSE, dimnames = NULL) 

创建一个c(1:12)的三行四列的矩阵,

colnames<-c("c1","c2","c3","c4")

rownames<-c("r1","r2","r3")

 x<-matrix(1:12,nrow=3,ncol=4,byrow=TRUE,dimnames=list(rownames,colnames))

x
    c1 c2 c3 c4
r1 1   2   3   4
r2 5   6   7   8
r3 9  10  11  12

2,矩阵的转置

y<-t(x)

若是针对的是一个向量

y<-(1:10)

装置后得到的是行向量
> t(y)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 2 3 4 5 6 7 8 9 10

若要的到列向量则
> t(t(y))
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
[7,] 7
[8,] 8
[9,] 9
[10,] 10

 

3,创建一个服从正态分布的随机数矩阵

matrix(rnorm(100),nrow=10)

4,制造一个数字相同的n列m行矩阵

matrix(2,ncol=n,nrow=m)

4.1创建对角矩阵

diag(x,ncol=n,nrow=m)

若x为矩阵  则diag(x)将会提取矩阵x的对角,则返回的是向量值

> diag(x)
[1] 1 6 11

> diag(diag(x))
   [,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 6 0
[3,] 0 0 11

返回的是以矩阵对角的对角矩阵

>diag(c(1:4),4,4)
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 2 0 0
[3,] 0 0 3 0
[4,] 0 0 0 4

>diag(3)

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

>A=diag(4)+1
> A
  [,1] [,2] [,3] [,4]
[1,]   2   1   1   1
[2,]   1   2   1   1
[3,]   1   1   2   1
[4,]   1   1   1   2

4,求矩阵的行数和列数

n<-ncol

m<-nrow

为矩阵的行和列命名

rownames(x)<-c()

colnames(x)<c()

 

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

 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))

对一个正整数z应用diag()函数将产生以z维单位矩阵,例如:
> diag(3)
        [,1] [,2] [,3]
[1,]   1   0   0
[2,]   0   1   0
[3,]   0   0   1

 

对矩阵求逆

solve(x)

R语言的一些矩阵运算

原文:http://www.cnblogs.com/yupeter007/p/5325575.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!