- 在线时间
- 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。+ }, N( c( k" @# |2 @" F
1、对角矩阵和单位阵。- n' [# A/ _- h$ h/ G( Z5 i* J
例1:x <- 1:6; diag(x) #对角矩阵3 S4 b" \5 X' w# z% d4 w, J' A
例2:y <- rep(1, 5); diag(y) #单位阵( E! e; E' D9 J7 S, p1 U
5 h# E, o: { P, _, _2、矩阵下标* Y+ a3 r0 M# C0 B
例1:xx <- matrix(1:20, 4, 5)
( o6 A1 l! _5 h" t" I7 ?; S& Jxx[2, 2]; xx[2, 3:5]; xx[3:4, 3:4]
+ H- C+ p9 H) i1 V# R, Nxx[2, ]; xx[ , 2]2 I. K7 U# E) T0 k
4 U+ d# Q9 }* r/ P# c J, a
3、代数意义下的矩阵乘法"%*%"" H5 I/ r% H! X: o0 |
例1:yy <- matrix(1:6, 3, 2); zz <- matrix(1:6, 2, 3)
5 \8 C, Q' N0 E, r$ Cyy %*% zz; zz %*% yy
5 Q; y0 I# z) f$ ~! m5 j$ e: H5 R
4、矩阵行和列的维数* y& D' Q. N1 ?; P# o% b
例1:xx <- matrix(1:20, 4, 5)
* r( Y+ f8 A! v$ G0 A. ~: `" _' K# ?dim(xx) #行和列的维数0 t# g v+ A; X0 O# O
nrow(xx); ncol(xx) #行数和列数
3 A9 u9 U2 Y( t4 v2 R
; z( ~! }: [' B+ ^9 ~/ f& P5、矩阵的主要运算函数
8 G$ w% l! ~0 E; a例1:x <- 1:6; y <- as.matrix(x) #转换成矩阵- W* L6 S/ a {4 d8 O' g
is.matrix(x); is.matrix(y) #判断是否矩阵, h) C6 Q: l) O' ?" s/ q/ s8 D
例2: diag() #方阵对角线元素或者生成对角矩阵
1 Z* T8 U+ Z, @+ c% Mapply() #对矩阵应用函数4 {/ {- A# ], l: O6 ]
eigen() #求特征值和特征向量- ^5 Q% W; o% h$ }
solve() #求逆矩阵8 T4 ~) l( ^ n' H1 }! z& o6 e p3 z
chol() #Choleski分解
9 M1 B- r4 ]$ J8 osvd() #奇异值分解' W) K; w+ B) J7 \/ C1 v' h
qr() #QR分解3 k; \9 A" |8 |. Y0 ~8 }0 O
det() #求行列式
. O U5 {5 j) p: T+ x. `dim() #给出行列数+ Y3 W9 ]% Q7 F& Z9 V2 l% }* w; c
t() #矩阵转置
# k4 _( P! t5 t" m9 x# a6 ~" U2 U0 \/ q% E0 S* z& z
6、矩阵合并5 O' z( @% u7 [' ]8 [
例1:aa <- matrix(1:6, 3, 2); bb <- matrix(7:12, 3, 2)
+ C8 J3 S0 S2 {cbind(aa, bb) #按列合并
1 j- A g7 j) J, }rbind(aa, bb) #按行合并
3 G. e8 x- |0 c9 _' C" B
+ s/ M2 B8 O7 a* v! Y- E. s( }! y7、矩阵apply()运算函数:语法是apply(data, dim, function),dim取1表示对行运用函数,取2表示对列运用函数。9 ?4 [, g- Y& j- V- [7 U2 Z$ w r
例1:xx <- matrix(1:20, 4, 5)/ S [2 g" v# @ N& O& Y
colMeans(xx) #列均值
5 r& X3 W! i- q( h9 | P% P3 E0 W. rcolSums(xx) #列和
$ c m( z8 c X' @其余大部分都要用到apply()函数2 z1 G( |1 {& m$ |6 f9 y5 N
例2:xx <- matrix(1:20, 4, 5)7 A* b& b6 a& P4 b% o. K _9 ^
apply(xx, 2, mean) #列均值,等同于colMeans(xx), O) C" x8 o! M. E1 C" z2 K
apply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。( e; s' y i7 D h. f8 W. F# r) ]
apply(xx, 1, var) #行方差
6 Y% b; o. l, ~apply(xx, 2, max) #每列最大值: ]: w: k+ d- P( d3 ^$ G4 p. Z
apply(xx, 2, rev) #每列的数反排列( E( s: p3 G; T1 l. d
& d8 t( G# d7 i6 R4 q8 R$ f) k6 t6 U! s0 N: K
|
zan
|