- 在线时间
- 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。7 {- n+ J* T" D
1、对角矩阵和单位阵。
2 L6 M( n( m+ q: Y0 J7 w例1:x <- 1:6; diag(x) #对角矩阵- F9 l; V) L% O
例2:y <- rep(1, 5); diag(y) #单位阵
1 g6 k- X- c4 D& f/ k$ Q) |) ~7 J, g+ E3 `
2、矩阵下标1 d' ^/ L3 J/ {/ n
例1:xx <- matrix(1:20, 4, 5)* T& s6 a/ K6 Y& w0 s6 E0 a
xx[2, 2]; xx[2, 3:5]; xx[3:4, 3:4]
0 ~/ i# G E# [2 t( Cxx[2, ]; xx[ , 2]
6 g6 T0 k5 q% l& o" R" n5 t% Q# k5 e6 `' Z
3、代数意义下的矩阵乘法"%*%"
1 }4 _% l1 S- }, V/ q例1:yy <- matrix(1:6, 3, 2); zz <- matrix(1:6, 2, 3)
! i* v+ @ t) @! N% ~: Myy %*% zz; zz %*% yy4 y" v$ P# _# I+ T
: m6 t3 Y- [1 p4、矩阵行和列的维数/ C, l- `$ n5 E5 Y
例1:xx <- matrix(1:20, 4, 5)
; z$ P; x& w& m5 f+ mdim(xx) #行和列的维数
" K5 N$ S0 W: t& z* o! _$ Rnrow(xx); ncol(xx) #行数和列数7 Y/ e1 J" T' K8 F) ~- t
+ H9 p8 k$ Q: W# W( p5、矩阵的主要运算函数$ |2 K) F$ ~; y# F$ S6 M$ H9 E
例1:x <- 1:6; y <- as.matrix(x) #转换成矩阵, l7 L" z; F9 e; }2 c
is.matrix(x); is.matrix(y) #判断是否矩阵* b. f$ H2 B3 I& d, Q
例2: diag() #方阵对角线元素或者生成对角矩阵
, r6 a8 [5 k$ ]4 k( \2 _apply() #对矩阵应用函数
6 {8 V0 {/ h" Qeigen() #求特征值和特征向量
! N9 G3 G# O7 n1 msolve() #求逆矩阵
H8 o! _2 p6 Ichol() #Choleski分解* r& V4 ^$ J; f8 H Y, p9 R, Z
svd() #奇异值分解4 _: a) W' v% d
qr() #QR分解
; U7 H) _1 I7 w/ z# X' \6 Qdet() #求行列式
- [- l$ f+ w/ r& f, Wdim() #给出行列数, d9 |$ j$ ~5 G6 L; y% e4 ^1 p! X9 M
t() #矩阵转置 k9 t7 j7 \4 i5 S7 Q
1 x- B' e2 u8 Q" [
6、矩阵合并& O8 p1 F0 i/ Z6 `* |2 {) d2 a
例1:aa <- matrix(1:6, 3, 2); bb <- matrix(7:12, 3, 2)
" y- j' f1 J* I* F% icbind(aa, bb) #按列合并& f% `6 t& X; D5 R) S
rbind(aa, bb) #按行合并) ] g! o! Y" \
1 k7 t3 {0 L7 `! v& h2 c s. U
7、矩阵apply()运算函数:语法是apply(data, dim, function),dim取1表示对行运用函数,取2表示对列运用函数。: o0 p4 \4 g; g/ Q
例1:xx <- matrix(1:20, 4, 5)
$ s7 r" l2 E q( j x1 tcolMeans(xx) #列均值) B# @$ H1 K( o) R
colSums(xx) #列和
3 }, b9 V0 T" [/ i5 N其余大部分都要用到apply()函数
+ V2 M% L2 J ]* I8 v9 V. q* q y+ k: K例2:xx <- matrix(1:20, 4, 5)
2 x. f- L% P+ A5 O; K3 Mapply(xx, 2, mean) #列均值,等同于colMeans(xx)- d5 ~8 }$ x# {# J* _ w5 E
apply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。
4 A2 M7 I* S/ F3 s, H tapply(xx, 1, var) #行方差
" |' _2 `' @2 }$ m6 n3 s# i7 S" dapply(xx, 2, max) #每列最大值
+ w4 E* r7 `9 tapply(xx, 2, rev) #每列的数反排列* h R- r/ c- L( N
0 y \7 I3 F0 l" S: z
. k' `; w- G7 f1 J& y8 i
|
zan
|