- 在线时间
- 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。/ J: B/ ?: A3 @; H5 O1 N% z! G' A
1、对角矩阵和单位阵。' J3 s+ ]* W5 _5 m! x2 b4 _) S: I; M
例1:x <- 1:6; diag(x) #对角矩阵
7 Z: y5 V2 m. B) i/ }例2:y <- rep(1, 5); diag(y) #单位阵" J% `2 R4 ] c
0 u9 _" n& L d/ J5 Q2、矩阵下标& C' m1 K4 \# m5 {( U
例1:xx <- matrix(1:20, 4, 5)8 T7 R1 I6 _7 O7 `' G, ]
xx[2, 2]; xx[2, 3:5]; xx[3:4, 3:4], l! c, P* N ^7 D/ f% O) j
xx[2, ]; xx[ , 2]
* |# ?0 P5 T# o+ `
2 W5 p2 H4 {5 L$ y3、代数意义下的矩阵乘法"%*%"& h B% Q6 x- J3 q
例1:yy <- matrix(1:6, 3, 2); zz <- matrix(1:6, 2, 3)3 z5 | P. m$ R, b$ u6 s0 E6 ?
yy %*% zz; zz %*% yy. n. o, \$ W( ?! w9 C6 O( d
0 Z( b5 f! v2 g5 |% X0 w
4、矩阵行和列的维数4 I* B; J1 u( `3 l
例1:xx <- matrix(1:20, 4, 5)
3 x4 X/ L. F6 f( a" H9 X: u: X" pdim(xx) #行和列的维数7 z) w2 A( i* `- [5 C, d
nrow(xx); ncol(xx) #行数和列数
& T8 K/ ^) L/ M/ A% Q. D& V. f& H. D" U% k9 K
5、矩阵的主要运算函数
% C# ^$ c. a. R! ^7 i# x例1:x <- 1:6; y <- as.matrix(x) #转换成矩阵5 s5 x, Z* ]" X# h" F
is.matrix(x); is.matrix(y) #判断是否矩阵
# Y/ m8 l) ^0 W3 S: Z6 y例2: diag() #方阵对角线元素或者生成对角矩阵- P5 O+ ~( G* X8 p. m9 M
apply() #对矩阵应用函数
8 @; p, g! Q5 n& C; Qeigen() #求特征值和特征向量
2 G5 S* h/ Z2 p" u, Q+ L+ j+ Isolve() #求逆矩阵
% Z( d0 q6 Z; G( |. uchol() #Choleski分解, m ]! B$ F( h; D8 m
svd() #奇异值分解
{7 h3 _" U" F3 J, Qqr() #QR分解
; ?% q' D7 q8 Ldet() #求行列式
% I0 u' s; c- t3 _9 C q2 ^dim() #给出行列数
7 D0 v8 E1 ~, S6 J* { q, F. St() #矩阵转置
4 P6 ^9 k, y* [6 p S7 \; ^( V
7 Z. f6 B' i% C. D, j7 M, {6、矩阵合并: Q1 l) E4 M7 j; n8 X. l: W$ l6 _
例1:aa <- matrix(1:6, 3, 2); bb <- matrix(7:12, 3, 2)) B8 m& v2 C* I/ V( E' f
cbind(aa, bb) #按列合并
$ G( P ~3 ^$ ~5 y2 a brbind(aa, bb) #按行合并
2 h, f6 \7 x# P8 y
* a7 E0 x7 h7 q$ m+ z7、矩阵apply()运算函数:语法是apply(data, dim, function),dim取1表示对行运用函数,取2表示对列运用函数。
( M" C, D9 ?7 H' S/ N例1:xx <- matrix(1:20, 4, 5): E$ A" c3 L5 o D* y
colMeans(xx) #列均值
# s E( I4 D3 S! j0 d' IcolSums(xx) #列和- O* \9 F0 p3 f1 r# I4 U8 M
其余大部分都要用到apply()函数2 ] a. @- n/ f3 z
例2:xx <- matrix(1:20, 4, 5)
) l: ~2 [2 J4 ?" ]apply(xx, 2, mean) #列均值,等同于colMeans(xx)
: k) m E/ K/ q) h* G0 [% kapply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。7 o% O/ [1 P7 `' S
apply(xx, 1, var) #行方差( \5 q% z) |+ u/ {# b
apply(xx, 2, max) #每列最大值
& ~6 ]0 [6 P1 r3 r1 g; n/ K7 F& bapply(xx, 2, rev) #每列的数反排列- Q4 V5 |* C" v- [! e" i
# c( R+ h; q. b$ V X/ h+ X
1 g6 p- F2 E; g. [3 u0 i- i* y$ e0 g |
zan
|