EDA365电子论坛网

标题: MATLAB —— 学习一下协方差 cov以及协方差矩阵的基础知识 [打印本页]

作者: mytomorrow    时间: 2019-11-12 10:38
标题: MATLAB —— 学习一下协方差 cov以及协方差矩阵的基础知识

6 }  _5 \. F% N' y% \7 g9 j! ~Covariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。
6 t4 U0 g* s1 n- A/ z9 W6 v& A2 z% F# o8 H9 y, r) z$ H7 m' q! w* R; x
本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。
. G( f7 ~7 v; H- r- [0 |8 V& i" l/ U& O, |3 s" c6 F, \
废话就说到这里,下面正式开始介绍。
6 ^. E7 a' o8 H* H" r0 j8 F
# F! P, S4 a4 f$ l6 K* z. Q8 O目录  \& _* C, |# ]& ^' s. ?4 @

( K) [  r) L7 w0 r" Y: T& A基础知识7 f' P2 d0 d( d; |5 d: X
7 V4 d& u, `0 t
协方差(Covariance):
7 |' v$ U1 p6 C/ c4 e! @8 A- ?! r6 E/ U% ~, o% [
协方差矩阵( covariance matrix):8 t* N. d5 W& l& Q, S
& I. s! Z8 i- f0 T  ^
矩阵的协方差:
; s2 [3 ~2 h$ Q- _$ O6 x" F3 _
, N7 l( A* M- ~$ v6 D) ^方差:(这是赠送的)
2 B% y) w5 F% N- r& q1 U, w( u% L5 M- {, R' C9 z
MATLAB中的 cov
, y4 U0 p$ ]; k1 U4 n" o
$ X8 G1 ?1 a5 U8 z- Y. A% Q+ z语法格式:0 W, q& R; l6 y" O8 d; c

: m$ Q* K; M8 s1 CC = cov(A)
4 Y# @2 i' m: ~
% ~0 q. n3 [/ V4 i$ PC = cov(A,B)
& a! N8 t* g8 d, q" m: n7 p& h, t) }' `4 j, l7 y) h
C = cov(___,w)+ P7 ?' _# a: w9 O  O

8 h' X) P: \# f  I. sC = cov(___,nanflag)' U$ ]; ^2 E; j, B+ m$ f9 g
: B- I+ G( g* m( F
示例
; a4 }: ]/ L/ r- v) u
( w: d2 {; M  q. m( QC = cov(A) 举例(矩阵的协方差)
6 q9 g! J* r" b/ D3 i/ _
8 K; Y/ ?* H- K% vcov(A,B) 举例之两个向量之间的协方差. z/ v" E1 u& [& n6 p
/ \' z2 O4 P: ]* k; t
cov(A,B) 举例之两个矩阵之间的协方差* g3 v3 _" s; p8 D. }; h
2 X4 p3 q7 j. E, {: W6 V+ C6 ?
Specify Normalization Weight5 ]2 l2 j) p  g6 l
# R8 }; C* w: e$ u6 z* u7 l
Covariance Excluding NaN5 @$ X9 G9 N- @. `
/ F9 R+ D5 r7 v
0 ]2 b% z3 r- u; y0 U
9 O% m; m4 Z5 f" R/ |6 _
基础知识
' M' t2 R. V2 h6 ?( |
协方差(Covariance):

) ?: c% f) w; u2 V
9 X: V6 h0 ?) w9 |* F( _  R% A% E对于两个随机变量向量A和B,那二者之间的协方差定义为:
: r; @% \: S6 I7 E6 S0 K) n& T. I1 I& }7 A& Y: p- y
9 ?5 ~  O* M$ A
; z9 w. F0 \' t6 z! k/ L
其中表示向量A的均值,表示向量B的均值。7 Z; @% P" H; O4 @# k- k0 w$ n

  d3 }0 M9 O3 W/ a2 T; g+ {协方差矩阵( covariance matrix):

: d6 ?/ A* B% k9 F& T3 q5 o- r9 o' p0 w3 D" |# \  r* q* e% l
两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,
. b/ h6 k' S2 ?' ]7 h
1 k' U  @6 T) d' ~
0 L( L. d+ a, k9 i& u; ?& u
& K  t/ y9 g2 W* P# o$ L矩阵的协方差:

+ @) ~: F. I6 \% i# d
- Z6 o! i6 M- ^3 n) ~对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法
- P3 S# V% s2 D7 Z1 G9 Z- C8 b/ ~5 W1 F+ l5 b' J+ T4 ?
4 I: T; N& f6 J3 V
3 f5 D1 y! Y& W# h6 h. m
方差:(这是赠送的)
. v) I; v' H2 p0 F% q

% w  o; B. n& c' ?6 V; P. I. O$ `( K对于由N个标量观测组成的随机变量向量A,方差定义为
! M5 _6 X2 h: C% U+ r5 l4 A7 m" T9 Z% y  d/ X: J
2 B. i' ~3 Y) q, X% C

3 N3 {8 X5 d7 |  ?& W其中u是A的均值:- k" X' b' Y. h/ Q

: X$ i# t9 v7 n : _% o) s' Z7 @

+ v3 ?( X) e  f一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.$ O  ]  L" |( y  Z$ Q+ |% S3 q# |

) f- n! I) @9 R* {8 q(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)  F4 ^1 O" o2 S* J, L; V

) A  r) n# M- B. q# F: f- X/ h7 Z. F" W  K# }
MATLAB中的 cov
1 `+ ?# V5 i; @' }; `
' t2 m' W4 }3 A7 s) U( b5 u
语法格式:# s% {4 F5 }  n
9 g7 f, `; V% L) j5 @6 r2 O

* n6 E3 j  Y; p4 c5 S% r) x; r9 ^: m
下面逐个讲解:# N$ z' h9 C: |0 b0 p" Q, L

/ E+ s- ?+ S( S! fC = cov(A)

  y; H  V8 C. H
0 ~  G' C4 ?5 oC = cov(A) returns the covariance.) b) P) V" a3 D7 N2 l; w4 e/ a( B

( p' o- S. ~- S* y) O4 D2 wC = cov(A)返回协方差。$ S  B8 D7 j& K/ Q6 l3 m' {5 M2 [

) T4 `9 f& \! C# X
- u! m- V- E- e5 Z. r6 I

( i$ l8 g" p5 S! F) z) w  m6 l
  g$ |8 E) [5 b

7 o5 |" J  ~$ V+ D
* D: j  G% e% ~( D, l

7 T: g! B/ w$ D! B: u7 [4 R
9 D  a) G: F( Q- x6 h7 P4 d

9 n: u9 \' f0 }% ?(你看看人家考虑的多周全!)4 W& A% b5 W" X2 V

1 c0 s. U$ ~8 H# Y' H$ ~4 a! s: M7 G
. ?- [1 \/ D: w; v0 ZC = cov(A,B)
1 y" r$ d3 s4 B3 _4 [, ?
; ?8 C9 I7 u' M, w3 u  G0 ]5 O
C = cov(A,B) returns the covariance between two random variables A and B.
- x1 J' A) j# ]  O  R3 M% m' M- p3 Q% K$ c4 e- A" y3 F/ ?, T' r( L+ L
C = cov(A,B) 返回两个随机变量A和B之间协方差。/ \3 Q3 \, }* i4 [

) l2 m8 V: F) J. M/ K; L9 G

; P0 }; R2 g, g9 `8 K) Q0 F

$ l- n% I9 t+ X0 j* D: f

" ]& b+ W% n; I
, V  W0 a/ z! ?9 [0 B2 [3 f

# F( X5 x2 S9 i! g
" s+ l% K7 G& U

6 |" q7 f; K: @( x+ C/ B2 ], @/ f$ p+ r9 A0 s5 T. c/ }$ D
C = cov(___,w)
9 a" P% M9 H  i
3 \! w# H0 N9 p$ a: d% }
C = 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.& I- p& O+ j2 n2 r0 U4 f  A4 X
) h8 w5 m1 K- v' t2 w
C = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。
) P5 r- {2 Z. A$ A4 Y6 m, r
5 j% O6 k1 f1 c* Y3 F. Z$ B0 Z& t4 [
C = cov(___,nanflag)
3 M: w8 n5 \1 p% L

* h$ A! h# H( l4 a( uC = 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.! t# ?, q$ L, Y' A+ ?

+ k& Z% p9 L; S' h0 J: WC = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。$ }  C$ }6 X: ^  ]' N' x

3 d; k& x! C6 \1 C$ l
) V6 ~& K  X  H8 G( R示例

4 L& V  L6 x# q" I7 W
2 u. b0 o1 y% _# K# E下面举例说明重要的语法格式:5 C/ z+ P$ u3 ^! a6 J

0 N6 x- s8 _# o1 r& m3 P$ lC = cov(A) 举例(矩阵的协方差)
  n  x# L7 V  ^" Z. }7 \- G8 u8 J
2 l3 H7 ]7 h3 }  L
Create a 3-by-4 matrix and compute its covariance( Q* |' J4 R( z3 h( e( x' I

) a5 y$ F5 K# [5 J  @6 l. q
  v4 P/ c: j, ~

% S. d5 K% s" e, B6 `9 w/ w. Y! b: J
) n, B4 n0 k( P$ x
) R& L! Z7 D+ ~" c- o
  ! n8 B( v# B# X* i( e' h: [3 h1 g- k
% g, ^2 }; F' g2 Q' G" X
7 \# v+ b2 p6 I) n" U
Since the number of columns of A is 4, the result is a 4-by-4 matrix.
1 p3 A6 d" w  N% O" P" H
& N4 m7 _" M% H/ f由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。
% ~; P3 v2 Y  D: ]$ @+ Y  U* q+ j. F* g- P' o- [9 L
" n# j3 L/ y  b; }0 a- B5 W) x
cov(A,B) 举例之两个向量之间的协方差
) B# K7 O6 T( q4 `7 @+ z

! Z: e1 j/ S& I- H# n; y$ z1. Create two vectors and compute their 2-by-2 covariance matrix.
( T) @" J' d4 L. V( [7 D
5 x- q9 g7 u  S; b" E9 Q

: n9 _  k: g$ F' O
8 Z) o% p' @8 `% \2 t8 m4 E. ~
8 f6 ~) I9 }! F

9 j: \# @% L: ]9 n
7 I5 y# L# j/ x3 {
* [6 l0 ]: A- s7 {, y8 G0 p+ i* I0 C! m

* `/ C- D4 l/ N5 G- {4 K* S5 ~* V7 ^/ \! |1 z( j
cov(A,B) 举例之两个矩阵之间的协方差
4 R/ c  s% m" e  _7 S1 J4 v, x

2 }' w4 t2 F: O! V# f# V# x7 {2. Create two matrices of the same size and compute their 2-by-2 covariance.
/ d) g8 G/ y$ z: e: G# `
1 B* T, A  o% N/ \

. t8 h! t3 z. e8 ~, P8 B, k; t( |7 H1 ^8 K; o! c3 [
" z  `- E4 x+ q5 s" L( I

# X0 Y( L% g8 i) J

5 L. }3 G% N4 a2 `- S8 |' t$ [  g! x2 Z. S8 C$ h7 J' c
. K* K  d4 H2 x/ H
+ ~% Q) x5 X, Y: h, o8 s" e
这相当于求A(:)和B(:)的协方差,如下验证下:

* m8 I& Z1 F( l. v: R; N5 j# B
9 c- g! P8 }6 b# e9 P
4 {9 ?4 l. z' i3 L, V" P
! `( C, f0 O, \ 7 f; X' Q6 E* O% z
, k! w+ V6 ~3 F8 E" F- c- w/ i
& M3 d& K  W) R. d" M+ Y$ V
- Y8 V8 }/ b& {2 D- K7 F( I9 M
对比下cov(A,B)发现是一致的:2 M( L( }+ D- Q# }* v7 H- n" }/ T
* `9 j" [& h1 T* }, ?& E9 E# Y

0 x, P( j9 f6 J. y3 L
: F& ~# B+ k7 q; {$ w: Y6 u% j. E5 B# [1 ~, r4 h
Specify Normalization Weight
9 G: _( m) R% k0 X8 p6 ?: G$ _1 @

7 u4 I6 S" M* x- t0 u% t; L" y创建一个矩阵并计算由行数归一化的协方差。% M4 P: I* L, i2 Y) r; o

4 G+ z& V6 X' z3 @( X

5 U* K+ S0 `8 @  C1 t8 @* K( f1 F1 d7 M) d

) i, F, d2 O3 L$ o& O+ w: f& v  j2 G: I7 b

% x3 q: z9 x7 U( E+ W$ S7 L& ^* C/ S0 R% p: O7 z5 X
我觉得还是有必要比较下不归一化的情况:
% c& _, N' c! d  W, I2 Y, ~" L
# y( J$ R) i! b4 m>> A = [1 3 -7; 3 9 2; -5 4 6]+ w- e8 K% o7 C# }' X# p

5 D/ p8 p  O4 B9 @A =2 \% u9 I8 [" s! M) I  L8 J; D! Q
  ?5 ?. J' @% b( [' k2 ]
     1     3    -7
$ _& j- `  q# D1 u     3     9     2
- Z: Z0 n+ k+ N" E    -5     4     6
3 t$ h% t! A8 E; l) ]; i/ K* o/ ?$ V
>> C = cov(A,1)7 o  ]& d' o' z( g
" n8 v  ^6 b* K+ D. z- [8 \/ x
C =, I. X" E6 E5 Q: n' V$ D; ?  _
+ v" f) n* g" C+ D1 r8 L" ]& m# f& V
   11.5556    5.1111  -10.2222
5 \% [7 h# f6 u/ L    5.1111    6.8889    5.2222& \( w/ a8 R  i+ H# L5 k+ q
  -10.2222    5.2222   29.55561 @/ O+ W0 u  b- U) ^
5 f- K* k  x( v* i5 ]* f
>> C = cov(A)
; h# C. c+ S4 p% E  P; _/ ~' y9 o% E
1 `$ m9 O, C1 x2 r9 V! C! B! c2 XC =
# @2 N% i6 {% p2 j+ }# \  a" U, [; g
   17.3333    7.6667  -15.3333
: \/ W' T0 R" M) Z9 `. d7 y& u    7.6667   10.3333    7.8333* u; h$ b6 E& f  z6 |
  -15.3333    7.8333   44.3333% r7 ~0 R$ \+ b- |7 K7 k

) D% o7 q6 t4 H3 U' a# K: i  W7 z3 e. d" `5 O, R6 Z) N/ a+ K
Covariance Excluding NaN
+ b! P& t, e, D7 \$ D' u
  U3 U6 J& U/ I% G0 }) |( D( B9 b1 w
创建矩阵并计算其协方差,排除包含NaN值的任何行。) l; K2 p/ ~  N- Q. ^  e1 i

* [) V0 D# [# \8 T+ }% PA = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]
$ P1 G; Q# G. f
, V# g2 J1 J4 c, e
  & v# ]/ y! M$ B. d1 ^) ?

* |9 z( `& T% \  v: eC = cov(A,'omitrows')

: w( n1 O7 \( E8 j7 I* l  r$ g/ d! F# ]. }5 [
- H; z. D8 P/ O$ ]; r2 v# y3 h$ h+ I

/ G) b6 G9 \5 [& e4 E) R9 f
# P  I% o% O3 `' U6 Y
- s* Z) k3 g" `/ y' [$ U# Z, n

- Y( u. h* ~/ z6 V
* Q1 ?6 n8 w* ~, M3 V3 y

2 q" u( ^% |/ U
) [. f  m' H8 c. I2 |2 `! [8 n3 G
1 G) O$ l# v' r, b( T
& X* a* K# F& p6 @: c
' o0 z$ }% C% l' v% X% n/ [

* {4 H5 N( W1 I, T( X" E
) a+ h1 Q/ K! g* d( W6 _" P
作者: kinidrily    时间: 2019-11-13 19:20
谢谢分享




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2