- 在线时间
- 27 小时
- 最后登录
- 2013-5-20
- 注册时间
- 2012-11-2
- 听众数
- 15
- 收听数
- 1
- 能力
- 0 分
- 体力
- 3870 点
- 威望
- 0 点
- 阅读权限
- 60
- 积分
- 1335
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 347
- 主题
- 320
- 精华
- 0
- 分享
- 0
- 好友
- 6
升级   33.5% TA的每日心情 | 奋斗 2013-6-15 16:58 |
---|
签到天数: 24 天 [LV.4]偶尔看看III
 群组: 第四届数学中国美赛实 |
矩阵(matrix) 矩阵生成函数matrix():matrix(data, nrow = , ncol = , byrow = F),其中,数据data是必须的,其他都是选择参数,可以不选。byrow = F默认为按列来排列数据,如果想要按行排列,令byrow = T。
- ~! o% a+ ~ } f, }1、对角矩阵和单位阵。( [9 J8 l1 `& Z( S; ^2 @4 j S
例1:x <- 1:6; diag(x) #对角矩阵" ]; G( U9 e# z0 ^; P# B
例2:y <- rep(1, 5); diag(y) #单位阵
$ L( m. c4 ]1 n5 C$ s: {0 k9 ], q# b4 H# J, O9 Y: u
2、矩阵下标
' B$ w7 [% i- B; `; U9 T: j- U( q例1:xx <- matrix(1:20, 4, 5)
( D# j, i- F Y" o" k. Y+ ixx[2, 2]; xx[2, 3:5]; xx[3:4, 3:4]
3 X! b4 O N: D6 W# A+ ~5 {xx[2, ]; xx[ , 2]
( [8 r* o# U* b
& _* i! e2 k5 M8 i& t3、代数意义下的矩阵乘法"%*%"
- \" }7 N8 N. [例1:yy <- matrix(1:6, 3, 2); zz <- matrix(1:6, 2, 3); D+ C) D+ i1 G& ?0 ^5 B/ B
yy %*% zz; zz %*% yy) Y6 |" i7 D7 X4 h# G) I; H9 m
5 X7 `" H- _7 Y2 l9 r4、矩阵行和列的维数1 A' g. t' c; }, o0 H
例1:xx <- matrix(1:20, 4, 5)7 C+ n, X7 G( p, k/ R2 ]
dim(xx) #行和列的维数4 A; q1 i; _! k9 r. V8 i
nrow(xx); ncol(xx) #行数和列数
" @/ S/ d2 ~& \9 W6 s& L: `8 R7 Q# {$ ^7 O5 h1 E8 q. E/ D% f
5、矩阵的主要运算函数9 c# ]* e8 W; m2 g$ q
例1:x <- 1:6; y <- as.matrix(x) #转换成矩阵" u3 A7 o Y4 p, x, ^1 k* R; {
is.matrix(x); is.matrix(y) #判断是否矩阵
3 S6 U: Z9 n7 }+ u) Q! j3 [ M例2: diag() #方阵对角线元素或者生成对角矩阵( n, j* k" q3 h7 ^3 K, ]
apply() #对矩阵应用函数+ w4 _4 e/ E$ Z0 e8 _' r! i9 e
eigen() #求特征值和特征向量
" ^4 j2 u' R" a$ c/ t- Ssolve() #求逆矩阵
: b) p1 s( Y, }, i. dchol() #Choleski分解
( T" a5 L5 F" Q. zsvd() #奇异值分解2 i/ ^/ p: \! [6 l2 y3 k8 Q+ I
qr() #QR分解/ u' N; b7 E' u ]1 Y. J6 c
det() #求行列式; `" s# W; k: x
dim() #给出行列数3 M) Z4 u- z1 B
t() #矩阵转置
1 Q3 ]# x2 e2 n! `4 K$ d7 }5 L; g: `, N8 }& ?' f
6、矩阵合并
1 `& i* j- X2 B; X- A例1:aa <- matrix(1:6, 3, 2); bb <- matrix(7:12, 3, 2)
$ L4 K8 j0 z% [; I/ u0 ucbind(aa, bb) #按列合并9 A* A4 N+ i |0 l. b, k
rbind(aa, bb) #按行合并" m) L, Z: r! z6 [: Y# A$ Q4 m
5 |- b( \+ j1 L# q ^7、矩阵apply()运算函数:语法是apply(data, dim, function),dim取1表示对行运用函数,取2表示对列运用函数。! m; g9 v' { o' Y
例1:xx <- matrix(1:20, 4, 5)+ u+ N5 ]5 y" N# e0 ^# T
colMeans(xx) #列均值
- Q0 ?% t+ Y# D P- [colSums(xx) #列和" U" p+ `" V; u! W- Y" u) b1 ?8 U
其余大部分都要用到apply()函数: R1 k- J5 k: w' ^% b4 |4 D, |
例2:xx <- matrix(1:20, 4, 5)
4 z- H0 {" p/ L" oapply(xx, 2, mean) #列均值,等同于colMeans(xx). s5 N0 t z, a4 N
apply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。' b+ J, I4 M5 b8 v9 F* A8 {
apply(xx, 1, var) #行方差
' t' {* ?+ ~/ f6 q5 n: z( Gapply(xx, 2, max) #每列最大值
0 V2 `4 j5 k' zapply(xx, 2, rev) #每列的数反排列
% h8 d2 R: p/ Z& j3 `
6 n; k% D, y+ L2 }
% y4 o+ g! N! \8 _ |
zan
|