- 在线时间
- 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。% a5 v5 c+ x+ Y' x) E& G% G+ V1 }
1、对角矩阵和单位阵。! G3 D" M7 u# J# C0 W) _5 I
例1:x <- 1:6; diag(x) #对角矩阵
# x- d F: f: j: c L8 M例2:y <- rep(1, 5); diag(y) #单位阵
3 X/ w2 |2 B z" Q1 M1 M( o) o( c" g: K7 Z, d
2、矩阵下标! V! I( H. I! k
例1:xx <- matrix(1:20, 4, 5)
! g; u' V: L. N' }% A0 W o) O3 axx[2, 2]; xx[2, 3:5]; xx[3:4, 3:4]
) K0 i$ G8 e' ?8 H7 D7 H2 ~- Dxx[2, ]; xx[ , 2]* J% F& O" c b/ N7 i- y5 p! T
& g7 [* R8 ~" |; H7 y% G3、代数意义下的矩阵乘法"%*%"
( V7 D! Y8 }8 c5 N) y! `* Z例1:yy <- matrix(1:6, 3, 2); zz <- matrix(1:6, 2, 3)
8 h+ N+ {: d7 L% x+ P7 v& h2 J8 m1 Kyy %*% zz; zz %*% yy
$ A( {# F- |6 p* O E. Q7 r0 I5 t
4、矩阵行和列的维数
. h2 g3 X& K6 y f8 u9 s8 p例1:xx <- matrix(1:20, 4, 5)3 @% D" d. N8 G! Y
dim(xx) #行和列的维数5 T. F$ G5 u {; E4 ~# C: g
nrow(xx); ncol(xx) #行数和列数
o6 A6 V: v1 N. u @+ v3 G! e5 a: z2 d8 o' K0 l
5、矩阵的主要运算函数$ c$ I1 m1 k; Y* `6 o4 {3 ]
例1:x <- 1:6; y <- as.matrix(x) #转换成矩阵2 i* h3 Y1 {* o. M8 h; p
is.matrix(x); is.matrix(y) #判断是否矩阵
$ G1 t8 O: Z1 q$ q4 p; V# B$ x* i例2: diag() #方阵对角线元素或者生成对角矩阵 ?1 j) Q q- x6 Z
apply() #对矩阵应用函数
9 p- `8 D% V( Z& A5 peigen() #求特征值和特征向量
* o! U9 z/ q8 W Jsolve() #求逆矩阵
5 o# t- G: L4 b' ^/ S% c+ d' F+ Xchol() #Choleski分解
2 d" \& J6 g/ M; | Osvd() #奇异值分解* \8 e$ t: ]9 A5 x8 ~9 G
qr() #QR分解
' A8 P3 e4 L( F" f% G \5 Fdet() #求行列式
: R* t' G! Z1 N" m/ g+ ndim() #给出行列数2 m: D. _9 f) i* O$ J, y) ?
t() #矩阵转置+ R6 G% L% h! d! b. x, d
: Y$ \" F! y( ]# M2 s2 Y' B
6、矩阵合并: l% P1 x, h7 a1 Z; Y( z7 ~
例1:aa <- matrix(1:6, 3, 2); bb <- matrix(7:12, 3, 2)4 |% c2 F+ R) t, f
cbind(aa, bb) #按列合并
( _2 i3 K: `# f& j: o8 _% Krbind(aa, bb) #按行合并5 C, R& q# Q" v9 {( z/ {
# b/ g5 h* [/ }4 g1 W7、矩阵apply()运算函数:语法是apply(data, dim, function),dim取1表示对行运用函数,取2表示对列运用函数。2 O, @0 ^: B" X1 A) X" e8 C7 ^$ `
例1:xx <- matrix(1:20, 4, 5)
. E1 l @( ^9 N% ocolMeans(xx) #列均值1 S# |: c. y% T8 _
colSums(xx) #列和5 ~3 {7 t/ q F6 `' Y( G( _
其余大部分都要用到apply()函数& f8 ~1 X: t1 ?& h% `. _0 z6 ]+ C
例2:xx <- matrix(1:20, 4, 5)
+ l/ ~& p' g \+ dapply(xx, 2, mean) #列均值,等同于colMeans(xx)
9 N0 R/ x+ \5 M; napply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。
2 Z$ a) p4 n2 Aapply(xx, 1, var) #行方差
2 ?, C' ^. z( j% g9 `4 sapply(xx, 2, max) #每列最大值
9 U, n- O$ U/ b7 e8 N! Bapply(xx, 2, rev) #每列的数反排列
) z& {- Z4 n! h" K1 A0 k' }( ^6 r
' P1 S6 N* A2 J! K: ^3 h/ m; V
|
zan
|