- 在线时间
- 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。, u" X l8 ]6 k
1、对角矩阵和单位阵。
: R% P* o9 p0 P- M l# o: O$ _/ w例1:x <- 1:6; diag(x) #对角矩阵/ v, S+ W6 g8 a j5 {
例2:y <- rep(1, 5); diag(y) #单位阵% B4 n' U. i) N" L* V6 q
( A3 l, f7 \+ b- W* i2、矩阵下标
' _- Y: n5 J% t: _. W9 H例1:xx <- matrix(1:20, 4, 5)6 e# [% Q: f( \+ N- N& _8 Q
xx[2, 2]; xx[2, 3:5]; xx[3:4, 3:4]8 l9 Y3 `: Y* ?" s/ p$ p& A
xx[2, ]; xx[ , 2]
- c; T$ C4 W, F" S& K8 ~0 y! W( J' |9 y C( I: q
3、代数意义下的矩阵乘法"%*%"7 e) D* b2 b' z3 e% I
例1:yy <- matrix(1:6, 3, 2); zz <- matrix(1:6, 2, 3)
$ I# H' A+ L: }8 K6 P4 Ayy %*% zz; zz %*% yy' M% ]% p4 u4 O1 ^6 e
2 ]6 s# B& v) S, H- q4 ]
4、矩阵行和列的维数$ Z8 ?2 c' e; ?- a6 G& P; a3 y6 O: L
例1:xx <- matrix(1:20, 4, 5)
/ \; c% D6 K, X9 s" L! zdim(xx) #行和列的维数
# Y% D) E+ a8 P( Rnrow(xx); ncol(xx) #行数和列数
/ P" h1 d/ n/ D) Y& u2 p- p5 L1 a0 k G, A- J, y, h
5、矩阵的主要运算函数
7 d: B7 n2 |/ C% s) _7 c2 s+ b例1:x <- 1:6; y <- as.matrix(x) #转换成矩阵
: j/ w. N8 `1 Y! S- p+ [ b. K5 nis.matrix(x); is.matrix(y) #判断是否矩阵
* j0 l q' t6 _+ e5 K, k4 m) Q例2: diag() #方阵对角线元素或者生成对角矩阵$ n% [) a, D# c4 ]1 a& T9 b' {
apply() #对矩阵应用函数
( }& M! ~4 e3 ^! Geigen() #求特征值和特征向量
6 g/ d, y- V/ psolve() #求逆矩阵
2 [$ I% k8 m. U9 J+ Rchol() #Choleski分解' z6 z% e' P1 d9 Q* I. b
svd() #奇异值分解# `- ]1 Y, E7 L( k
qr() #QR分解& J/ V+ B" t3 S% V$ h% K
det() #求行列式- m9 y4 o X) A8 b$ u2 Z9 t
dim() #给出行列数, r: T" {% Y r. q' v+ d9 T5 ^
t() #矩阵转置: }6 g2 z: s8 v$ b
) T! w' C' @& y% g, n6、矩阵合并/ d5 o0 M2 K+ g. {/ s. N, X# v
例1:aa <- matrix(1:6, 3, 2); bb <- matrix(7:12, 3, 2)5 O3 _0 h; L5 R
cbind(aa, bb) #按列合并; I. f( D. [& T4 a+ O( y
rbind(aa, bb) #按行合并; q" M" H0 @. ^0 B
9 U/ [5 G: C3 Y$ Y4 F7、矩阵apply()运算函数:语法是apply(data, dim, function),dim取1表示对行运用函数,取2表示对列运用函数。
1 N. a: g; g+ G# @ x5 V, ]8 |例1:xx <- matrix(1:20, 4, 5)
Z6 v7 w7 q: I( N! [colMeans(xx) #列均值) X$ T) |; I! c" D9 ]
colSums(xx) #列和) C; ]6 B" q# ?* j
其余大部分都要用到apply()函数; J% c* T5 n: ~; l6 j
例2:xx <- matrix(1:20, 4, 5)
8 u9 y- L* z$ @3 U% k( J4 m2 Iapply(xx, 2, mean) #列均值,等同于colMeans(xx): b. E# X% B, E+ \' T" G
apply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。% @7 `& o+ Z4 m* D6 E. P
apply(xx, 1, var) #行方差! _ E* P2 ]. p+ d# ^0 Q
apply(xx, 2, max) #每列最大值
C* o9 T( f& L9 x' N3 Qapply(xx, 2, rev) #每列的数反排列
h7 d* R3 U4 k' S& J
4 c2 {9 V) ?8 S6 H: u1 t# @; d
, O; r7 _% a, k, L; A" u7 n9 ` |
zan
|