|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
& J- D, N2 q7 F# c( U# qCovariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。% v& a; c# v+ M9 K4 }
1 O, l, s7 b3 m' a
本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。
$ v/ y0 ]1 q+ _5 d* E [! b! t m4 ]& w+ a' C
废话就说到这里,下面正式开始介绍。1 [/ k2 Z& j8 x( y. A$ {1 I
5 O# u; f! f1 F- ]4 H9 C目录
; s7 h/ n0 r4 R- _% N( i0 Z9 P3 O/ Q S: R/ W4 [
基础知识; t" j ?% U/ s+ Q5 s
e& X- [: h1 {协方差(Covariance): x( O( W* h8 n1 f3 k
, p' R$ Y5 Q B3 X% ?6 {协方差矩阵( covariance matrix):
, `( R( b" c- _. `9 K# |/ z
; A) @! M" l7 ^/ I矩阵的协方差:! B5 o2 x1 \) `, _, [
7 B4 D. T( ~ k" P) Z$ j3 s0 |方差:(这是赠送的), |- Q9 e' g0 C! m2 R
f$ X. O+ R4 CMATLAB中的 cov j" k A! R( d6 O- X7 A
4 B, B; y: E4 O
语法格式:2 S, T! ^. S7 s+ F3 M' r( i
/ P' @, u3 S0 [% Q* U* U% D) ]
C = cov(A)2 n+ I4 y' z$ k9 k$ ^3 a3 K$ d! }
1 [0 ?: Q1 s2 k! D" w0 j0 dC = cov(A,B) % {4 M' x; u! L9 b2 f; M
9 |# w+ p& P: s! d) q- eC = cov(___,w)( S2 u8 j$ W8 P: t/ m) j) z9 a* R
: l. G3 |+ W7 a5 [
C = cov(___,nanflag): W8 r4 h2 H$ `6 \; ^( m
( T! }7 d; N C0 C. W4 w. ~' J8 [+ D示例8 A, E- X" l- @
6 C1 q2 `% L4 D
C = cov(A) 举例(矩阵的协方差)
" ~6 L* j5 e/ r4 S+ U# [5 h
$ o/ T' B; B A9 G( L; ucov(A,B) 举例之两个向量之间的协方差
! ^. ], R6 ?3 p5 G( n; k3 p' H
B0 g. {3 _& @' kcov(A,B) 举例之两个矩阵之间的协方差 j* D1 O( Y( v% P
( I. \. f/ {3 K. @Specify Normalization Weight; |: y8 Q3 ?+ [5 t$ q
% u' [- G/ J8 f9 L+ C3 Z7 T# P
Covariance Excluding NaN9 T. O W @% F' B* a$ R( e) ]
# s4 n2 ]- C& G$ E
0 B7 K+ a5 g2 i9 r/ F% Q$ t
# b( K, B3 S; V$ f基础知识0 a) ] G: m8 {) ` {! M' ^
协方差(Covariance):" r. W/ l( u* v. {/ j+ T# s+ e
0 H+ Q: a/ f4 @; b3 [4 I对于两个随机变量向量A和B,那二者之间的协方差定义为:
, r! |% R- ^2 Q; ?) c: S
' n) M# Y b* ~8 V
0 u, E! v& G: h% P; t- m( N# d" e" k: A0 T1 m( K
其中表示向量A的均值,表示向量B的均值。
3 c! n% g" c9 _3 V& O9 W7 ?, K9 f9 p4 F* t: a
协方差矩阵( covariance matrix):! l' O9 I( _. A
4 b2 W3 h0 ~% V( I两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,7 E- p" L. w3 @8 O: ~) \
' A/ A+ D5 ~* L- \+ r4 |& Y3 K! K
; J- p9 O- j* X) A1 ?. O$ B* w3 T
$ { A" r$ ?/ o, W1 V5 B矩阵的协方差:
% l9 j1 P, P( J- y; Y. V3 d
, L2 u+ f9 }8 T- Z& I' Q4 B9 k* _0 p对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法) z$ a- ~, Q/ G% q# x
" w3 k: R" E: ^- ?- u J9 V
* t4 r# F: Z2 d1 P5 ^
8 G( Q; h/ z" j$ Y8 a4 I8 Z" U8 T: W方差:(这是赠送的)$ W' H; S( u" b9 @# j* V
0 x5 j, P, z/ Q, t7 s8 ~对于由N个标量观测组成的随机变量向量A,方差定义为. R9 s I/ q* O C! i
9 t. V; k' r$ U$ K+ m; w
. ^9 o$ ~+ T; Y+ K# c' `; A2 L/ M
. a0 c& f, ^6 x; Y; p; r( q) ~1 q其中u是A的均值:$ h" `1 V- d; n; B$ x7 e
t/ T7 ]- \2 i0 Z* A+ @0 B5 I
5 o ?) Y! {3 O
6 e' E" \4 f+ ]: {) N! \! d一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.; t& E3 U/ Z+ P+ C: Q' H- Y# O- O
2 S1 ]+ _8 B' c/ F7 O
(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)+ C. p, S5 }0 ? r6 y
0 H* V* ^8 `3 N5 g: [+ o% w0 d* _5 [! J+ L) _% {
MATLAB中的 cov
4 q& C; j- W6 p; u4 o9 U* T9 x: b+ L6 L3 O" X
语法格式:
. C U' N, O& E5 W7 p. e$ ]+ i5 p
: S4 Q3 l2 f2 ^) Q
& d. S& @7 b$ ]1 Q( Q% v下面逐个讲解:/ d1 `. l1 u% {/ g
+ u7 N i7 Y& K8 [# y
C = cov(A)1 B5 Z3 J3 e$ c9 {" ?5 Q4 A
4 \0 q) A0 {( [; g0 r
C = cov(A) returns the covariance.+ [1 z# q7 q N/ [8 ~9 L
7 U L* X5 g/ K! O1 X! kC = cov(A)返回协方差。6 q7 L2 T/ N3 Q1 e
- p* C0 c* M: ~* m$ p- If A is a vector of observations, C is the scalar-valued variance.9 P% _$ L+ z4 Z- C% ^
# h2 h2 e5 `8 L N4 S- 如果A是一个观测向量,那么C是一个标量值的方差。, v' |$ h6 K! m3 ~
% G* W6 Y( o" ?
- If A is a matrix whose columns represent random variables and whose rows represent observations, C is the covariance matrix with the corresponding column variances along the diagonal.
/ {: R, b) O+ E# h
7 j4 X- L9 Q2 ~3 F+ I! c. Y- `5 l) {- 如果A是矩阵,其列表示随机变量,其行表示观测值,则C是协方差矩阵,沿对角线具有相应的列方差。(协方差矩阵的协方差是列的协方差值): w/ s; `3 O& q
( z, c+ f" u0 m8 T2 ^- C is normalized by the number of observations-1. If there is only one observation, it is normalized by 1.
5 K5 b. u0 u& j: X% Z) Q6 i& |+ W6 f) d2 {
- b: ?2 ^. w7 V* }# @: Z2 ~- C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。7 W+ e. B/ D3 O6 X* i8 H% r" [
! y% g* C' O b1 R, a& l9 z" q6 d, m- If A is a scalar, cov(A) returns 0. If A is an empty array, cov(A)returns NaN.
2 l4 L7 H* v% }" K9 m' D/ q5 x
& g: m/ q% s+ Y0 _% U, y- 如果A是标量,则cov(A)返回0.如果A是空数组,则cov(A)返回NaN。
, k! @. e( U: S& A" i! D) `8 V
, F* Y9 y: p5 w% l% q(你看看人家考虑的多周全!)
7 ~) [: x) \: F* t$ w+ ?1 D1 j* X# J# O+ q* x X* S
0 {6 h8 t/ X! B
C = cov(A,B)
. X/ m w2 ?. k7 t, P0 ^* Q$ d% {& _3 R& b; U4 y0 a& s, _# f: r
C = cov(A,B) returns the covariance between two random variables A and B.
! z6 s8 y' J) Q5 H- }- U z" ?4 s' {" t
C = cov(A,B) 返回两个随机变量A和B之间协方差。$ X" Y( B( V4 k7 J% [4 E- ^
" }6 S; f* y/ I( H" c, p
- If A and B are vectors of observations with equal length, cov(A,B) is the 2-by-2 covariance matrix.
" Q2 s$ d- m p 5 G4 k, u( ]7 `2 ?
- 如果A和B是同等长度的观测向量,那么C是一个2*2的协方差矩阵。
- x! A# J+ O% D. A1 F # j# C2 H( ~+ g3 u& W" O' h
- If A and B are matrices of observations, cov(A,B) treats A and B as vectors and is equivalent to cov(A(
,B( ). A and B must have equal size.& ^/ i& Z6 d4 V' y: `6 W
) G3 Z4 P4 `" R5 Q! D8 i- 如果A和B是观察矩阵,则cov(A,B)将A和B视为向量,并且等同于cov(A(
,B(:))。 A和B必须具有相同的大小。
- K; n B' ]; ~3 {2 _/ L; y& Q % S6 O- w+ ?3 J# M# e
- If A and B are scalars, cov(A,B) returns a 2-by-2 block of zeros. If A and B are empty arrays, cov(A,B) returns a 2-by-2 block of NaN.
' M" d* T* B. | z; p4 M. e
3 R- m3 W2 K- L/ l! p/ v- 如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。2 [6 U$ Y( z% n5 m. E
% T' @! h. H5 n$ S1 R4 ~
& d: V% T' ^; h9 E- ~
" s7 B0 s x9 IC = cov(___,w)$ C7 }7 A& m4 s) ^5 M+ y
2 Q. r2 ^8 J2 H, R2 v) l; N% @' BC = cov(___,w) specifies the normalization weight for any of the previous syntaxes. When w = 0 (default), C is normalized by the number of observations-1. When w = 1, it is normalized by the number of observations.
" ^1 l& I, E2 `; Z5 q4 @) n
2 B( r" R& d+ K2 hC = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。
% e1 T. X( s( n( x
7 m0 {& ?! @4 M. Y! s0 d. w7 y, B6 _
C = cov(___,nanflag)$ m! L' E$ {0 v/ w+ s3 F$ v3 P1 B/ N
8 C% N, ?5 C( k; Q; i
C = cov(___,nanflag) specifies a condition for omitting NaN values from the calculation for any of the previous syntaxes. For example, cov(A,'omitrows') will omit any rows of A with one or more NaN elements.& _+ x- a; `8 R8 U
8 b& |* W! O) h% y" v
C = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。
4 H1 c6 X: V7 O# L' p; n5 ?( l9 p a& R* b+ @$ Z
1 i2 D& \& C8 |# N示例
& T/ ^* n" h% O9 }# y+ Y! R6 o4 @$ ]4 l& y6 `2 `: i$ W
下面举例说明重要的语法格式:
' M3 k* X W+ Y; f. y5 i; p: @! r% Q9 k5 U) ? I) }- }
C = cov(A) 举例(矩阵的协方差)
& ~: I- D5 D4 m% H2 T8 R2 R4 {" X
) E; ]: V0 a5 D; KCreate a 3-by-4 matrix and compute its covariance* X9 m$ E" L% u p: j
, c, m$ h6 _! J) x
- A = [5 0 3 7; 1 -5 7 3; 4 9 8 10];
- C = cov(A)
) P; A8 x7 ^- S 7 c) v: L2 l: a0 g4 c+ I0 T
# G. O3 u5 q) B- |$ n" f5 A+ b
- a1 U5 k; f! U5 Y- E8 k6 e7 }" b+ `. X, {
- C = 4×4
3 v$ f7 \, D& A- 4.3333 8.8333 -3.0000 5.6667
- 8.8333 50.3333 6.5000 24.1667
- -3.0000 6.5000 7.0000 1.0000
- 5.6667 24.1667 1.0000 12.3333
- 6 c' g% r9 I, O% k$ I& c2 d, L% Y4 j
( Y( ]0 T! u( \" M' B. W' w
9 t+ T' z0 g" w4 s8 c, ?0 k, y6 c& o3 B2 |% A( z
' K( I2 _# p tSince the number of columns of A is 4, the result is a 4-by-4 matrix.; C# w- B/ R/ i/ J* q- C
! @( Z! D- S5 |
由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。0 o3 x2 g* j3 u* a# M0 o
) v6 }" H+ q" a g4 I) u* _7 Y) q# E1 N* q+ D
cov(A,B) 举例之两个向量之间的协方差
2 y2 E. T+ G) A8 v1 t6 Z
6 q! W" j1 N0 c$ f6 o# |1. Create two vectors and compute their 2-by-2 covariance matrix. M, Q4 T9 _7 a/ h
/ M0 p' G- O# ?" c' P- g3 K: I
- A = [3 6 4];
- B = [7 12 -9];
- cov(A,B)! _# V% Y J$ ~4 I, X
+ t8 p9 W3 W. k2 l5 A/ t% a2 C8 C( z9 r+ d b$ d8 @$ R5 Q' D, p
- Z& c! P) @9 ]# i6 K6 g; z$ ^! |5 t; v' G' t9 V [+ l
- ans = 2×2
- 1 X/ L4 z# m) v! j# F( b
- 2.3333 6.8333
- 6.8333 120.3333+ B: T7 q4 Z8 N ?, d1 h
, x/ o. ]+ c/ G Z, `( c/ p
% i; f. ~+ d) G0 _# J6 C' o& p0 G( t! O6 ~9 O
, B/ ~0 `, x1 S; b( ncov(A,B) 举例之两个矩阵之间的协方差/ A/ j3 k% U" W& ~
! r, w8 f5 d4 q1 }
2. Create two matrices of the same size and compute their 2-by-2 covariance.
$ p9 p3 O) d/ E* F; _
- I9 X# u9 w5 R8 p! N& b( W- A = [2 0 -9; 3 4 1];
- B = [5 2 6; -4 4 9];
- cov(A,B)
" ]+ B3 r) g8 V# T8 y; h' D& o6 a
' `( Q5 i# f& p9 e' l2 a1 I% A/ ~+ ^( ~$ E
; S3 o! M& d, I% ^2 S& g# r
( A# Y9 A }9 Z; u- ans = 2×2
a$ P. i2 f; p9 y; N% b8 b* N$ a- 22.1667 -6.9333
- -6.9333 19.4667
. E' I2 H9 j; p+ n$ R l7 Y; @, c: [4 f+ |
0 ?3 ~7 r0 e, T" R" q0 Y
7 m) P6 h" s( w& q4 d8 ~0 ^0 a% r
这相当于求A(:)和B(:)的协方差,如下验证下:3 t: j+ k# e; R8 C8 C7 y
& o- _- F5 ?4 F
3 O0 k x" G2 c. _ @! g
* [- b1 p9 s# O6 G4 ]; P' E N
$ M4 _1 t( S( R, k! A* Q0 C4 G, W y% n- N: x& i
7 Q T: _7 m$ |* W1 g
3 A4 d% e6 u8 ~对比下cov(A,B)发现是一致的:
: E" @6 f8 G' F7 J% _& X5 s
8 ]0 c0 [3 H( u. U; X& Q6 q) R
( j8 t' S9 C9 k0 w% t
; [" M- f1 t/ t8 D* j1 ^2 F
2 h2 \3 n. o. R9 Y' O8 u* X# n
Specify Normalization Weight1 s/ S9 v, S5 U- H, D
! a( Q& J9 i, T! Z3 i1 E/ ^创建一个矩阵并计算由行数归一化的协方差。
+ X. J& D6 E; ^) t' H' n5 G% I
9 E F* F5 i3 Z1 B- b# |- A = [1 3 -7; 3 9 2; -5 4 6];
- C = cov(A,1)
8 `1 K* y; d! u6 p, T7 Q: q* W/ N
0 g) p' j/ w& _/ O1 z4 u6 _
, w, I4 K* R$ ~! @# C" P- C = 3×3
- % ?* q e+ `6 Z. E8 E; t9 U6 k7 |+ \
- 11.5556 5.1111 -10.2222
- 5.1111 6.8889 5.2222
- -10.2222 5.2222 29.55564 s9 ~5 Q8 P- {4 w
$ ]" M! b: r* m* z' ^
' S$ p' T' C; w p9 E# K
2 K, y. m' {* `' g
) C0 K0 F; Y& z+ T
我觉得还是有必要比较下不归一化的情况:
7 T5 M$ G! W. U8 ^3 m
6 s; b& Q# ?/ o0 C>> A = [1 3 -7; 3 9 2; -5 4 6]
% m# `/ W6 u3 c0 |! l' |
4 x! [1 V) c1 oA =) x6 _/ H Z( K: _/ f& B
2 n9 X7 w1 {9 R6 F# H# Q% S 1 3 -7
3 W0 P0 a& B L, S0 ~ 3 9 2* s( L; S, ^1 T
-5 4 6
2 J) k# }0 Z% |5 v8 |
1 `) c; P! [/ h. ?+ j1 u>> C = cov(A,1)
; m9 M* }8 ^7 {$ q- {* ^
! z+ B8 L0 n9 Z8 IC =
$ j) Q6 h2 v" q* v* P! B
2 u) ~1 L$ E8 G: j, U 11.5556 5.1111 -10.2222, L* _6 ^4 d7 x$ V @' Y m
5.1111 6.8889 5.2222
( d7 V$ o. g+ o0 z- w& f -10.2222 5.2222 29.55564 g, X8 p) ~$ r, x
& I! ^. m; o4 T; e( X N>> C = cov(A)
6 _% j- z0 t2 Z# ?
1 W ?) f$ R' I" z" O& iC =" o+ ^" e+ j X0 Q4 M; X& |3 r
5 E5 i7 c% Q9 s2 [ b+ O: @
17.3333 7.6667 -15.3333" a, [5 I. ~( a
7.6667 10.3333 7.8333
, G: V3 v+ ~1 F" o -15.3333 7.8333 44.3333
- H' d0 ^; {! z# D9 e6 p
2 J. h- u. y. n$ ~; l
( v- L1 I* |" ~Covariance Excluding NaN
+ t( }; U, ^% g* Q- D* x7 J5 v* C
' L4 v9 s- |: ^( }9 P! |创建矩阵并计算其协方差,排除包含NaN值的任何行。
7 R; v! M9 [3 }' V$ r
. C$ z. C& I% ]8 {A = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]
' K0 C0 a/ J" ~7 v. O4 D1 q5 U8 ?$ x u0 ?
- A = 3×3
' D, I$ ^0 P* }& x4 V# o( K- 1.7700 -0.0050 3.9800
- NaN -2.9500 NaN
- 2.5400 0.1900 1.0100
( g$ [- S4 U$ G$ N B) }+ |7 O
# k; O H0 z0 D. B; f. y G J; [* l! i( R, v0 p
1 }" b! _4 d i) ?% T: R: W
C = cov(A,'omitrows')) Y, i0 h; s" R) L
9 R1 C4 X2 m8 c* H- H6 d+ }0 Q- C = 3×3
% K+ V7 v+ X. a. T1 a+ D( ]- 0.2964 0.0751 -1.1435
- 0.0751 0.0190 -0.2896
- -1.1435 -0.2896 4.4104
4 W* V- F: ~4 x+ I7 o6 x+ p: X- |
" r9 O* T/ ?6 X( L+ g. f) @, J* @8 u
% s9 S9 B, Y+ u) l* v7 @
; a, T$ k/ |% v
: b" `) b' L+ J4 }9 ?' I2 N; G$ i" t; {0 p1 C" T4 q5 V1 z
; `. { B, x2 j* w; ~% y
6 E x) `0 i, b, Z4 } ]; b( U
$ z, e0 y" U( O7 e* d, o3 n. z5 C6 K
" ~9 l3 G. q1 \6 P' m
?2 d: E' r( W' G
' w, R1 G- W- W* X! W# n# j/ q$ e. U& \: C
|
|