- 在线时间
- 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。
6 X, x* P5 R1 s1 K5 T, O1、对角矩阵和单位阵。( H$ I1 d) { q( Z# R: L4 t, x
例1:x <- 1:6; diag(x) #对角矩阵- w, |$ l: u, P' k; c
例2:y <- rep(1, 5); diag(y) #单位阵
0 G6 G4 C- Z# D. g/ N- P$ a# [! f3 n" l& ^8 R: M/ @
2、矩阵下标
K" T+ U0 J& g例1:xx <- matrix(1:20, 4, 5)
1 R& O/ n4 Q6 Hxx[2, 2]; xx[2, 3:5]; xx[3:4, 3:4]& \( @( p" l. ?
xx[2, ]; xx[ , 2]
6 [, H1 f! r$ ^3 ~. E0 _
- m# ^% |1 a2 `. b3、代数意义下的矩阵乘法"%*%"- O9 t' [! w8 J; |4 ?
例1:yy <- matrix(1:6, 3, 2); zz <- matrix(1:6, 2, 3)& ^8 g) l7 b$ f, n% h. d1 [9 X
yy %*% zz; zz %*% yy+ |: y' n1 L' s) s
% H9 H' A! {, E; I3 \4、矩阵行和列的维数, _! Z! W# _/ O' t
例1:xx <- matrix(1:20, 4, 5)6 \* N) E4 @' `' J5 r
dim(xx) #行和列的维数. q: x2 Q( e1 G; j' K2 `
nrow(xx); ncol(xx) #行数和列数
1 ~ X$ }; M9 w' ?/ w* a+ I7 z8 l
6 m9 u9 D1 B3 F2 ^5、矩阵的主要运算函数
" ?+ D# Z& a" @例1:x <- 1:6; y <- as.matrix(x) #转换成矩阵
$ c* `9 W ~# Z, L+ d1 P. Tis.matrix(x); is.matrix(y) #判断是否矩阵
# Y# k$ Z! m& x. L9 X例2: diag() #方阵对角线元素或者生成对角矩阵! g7 G! H# q* I6 q
apply() #对矩阵应用函数+ `- F) P! j6 W- ~) s) \3 w9 a
eigen() #求特征值和特征向量
5 k0 P3 Z5 r7 d' Y( ksolve() #求逆矩阵
9 w$ u0 y& M; jchol() #Choleski分解
+ M ?( V% h. { O0 Fsvd() #奇异值分解3 {) L. i6 E/ A# R
qr() #QR分解
# x6 F1 c3 J# V- j2 idet() #求行列式
" _2 b8 N2 K J, p8 m5 m4 i( z2 p9 Odim() #给出行列数0 R1 b; @. q/ |1 j/ z# j, c% _
t() #矩阵转置
& @3 ?0 G, A2 z+ g
5 b2 k5 p1 s- J: b. O6、矩阵合并
3 c! |/ ~3 X# e3 m1 ~例1:aa <- matrix(1:6, 3, 2); bb <- matrix(7:12, 3, 2)
: Y+ Q0 T) E' v, W+ D# Ocbind(aa, bb) #按列合并
" n# s2 K" w% Arbind(aa, bb) #按行合并
1 S9 h; E! m( _+ T2 Z3 N1 |0 q$ d' E: l9 {8 e9 B
7、矩阵apply()运算函数:语法是apply(data, dim, function),dim取1表示对行运用函数,取2表示对列运用函数。
8 _& N5 C) t4 b6 e; ?例1:xx <- matrix(1:20, 4, 5)
' h% ^0 H) c0 G, i6 m8 O& X$ fcolMeans(xx) #列均值
1 H* c0 }- r# k, N, e# r/ T: YcolSums(xx) #列和
, S* T! L# Q6 D5 a其余大部分都要用到apply()函数
) z9 `3 \+ o$ ^* `! _% i; [例2:xx <- matrix(1:20, 4, 5) t; _' T2 ]6 |7 G, k" H) L! w
apply(xx, 2, mean) #列均值,等同于colMeans(xx)
7 m# ^: R: R* t( Z8 @apply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。
) y6 p* ]: [# u+ \7 \, r$ F* o; Yapply(xx, 1, var) #行方差
2 @& k. q' V4 p# V# A8 u7 Rapply(xx, 2, max) #每列最大值4 s4 q2 @9 S2 \$ ^. I) m
apply(xx, 2, rev) #每列的数反排列
5 }; C/ [& @; Q9 d/ ^* l; e3 V+ u0 G. A
2 V" G2 D- b* v7 B |
zan
|