找回密码
 注册
关于网站域名变更的通知
查看: 1642|回复: 1
打印 上一主题 下一主题

MATLAB —— 学习一下协方差 cov以及协方差矩阵的基础知识

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-11-12 10:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

% B" ]% z2 i& p# sCovariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。
( N8 p- K: F: b/ ?0 U) {
3 f$ A/ O  D1 }. n) H* w2 M/ `本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。/ j! n2 U" |+ Q
5 R) b6 y+ x3 H: Q/ y
废话就说到这里,下面正式开始介绍。. \; ?6 y0 d! h; x

9 Y( q3 G  q6 @8 ^2 j* g5 w目录2 U7 t- {  s/ p  B6 v$ j% s

2 h$ R( |) R0 Y: ~1 r( C: K基础知识8 Z3 k; r2 s( f

% X' D; M& e( v8 J2 k协方差(Covariance):) d4 I( k4 l7 ~- u/ b
3 v' c, F5 A+ f1 J0 ^6 M
协方差矩阵( covariance matrix):1 o5 s$ X2 `, k0 L* v5 T; J

; F6 K6 [1 N8 a* o( ?' A! i矩阵的协方差:) z9 J7 a' J0 U: p+ J/ ~
/ [7 T0 M% f* W- P( _( w
方差:(这是赠送的)
2 m) o' w, V+ M2 _- C( ?/ l3 x) [, W( B* [: r0 U1 v. Z+ U
MATLAB中的 cov
5 k- k. F: ^, T* z2 m
& n6 ?) A& b& ]语法格式:
% d. [( S" }: }1 V. n
4 Y/ K5 t- T$ `5 \# OC = cov(A)
; g; w; T( |/ e! {* k# C
4 l: p" [' `- @2 p+ f; n5 DC = cov(A,B)
. V( s, p0 r) G( X+ J4 w* m$ E
: O) B9 e% M( \  s- J) wC = cov(___,w)  d& G% [: e" O; @- D/ j

' T/ Q# {4 s9 A' O3 cC = cov(___,nanflag)
  H* b+ X7 H2 z! c+ J# N; A6 I3 H$ L! Z' v; F3 S  g; f3 X; H
示例
3 K: o4 B+ @; @: F2 j. o: ~$ ^* E# \( K' _) D9 y0 w. b2 K
C = cov(A) 举例(矩阵的协方差)
0 g1 s; G$ q5 x2 F
( A, j' a1 Y# J% @/ acov(A,B) 举例之两个向量之间的协方差! ?- \0 Z* s  @: D* m4 e/ e
& T5 P2 n% S  o8 Z' C3 ?% S
cov(A,B) 举例之两个矩阵之间的协方差
) b" T( p/ W: @! Z2 P) v" ?
. o! y8 R) p5 f" OSpecify Normalization Weight
+ r: l) t2 w$ F. W/ k7 P8 W* J( U6 q3 U: \! C" Z; j
Covariance Excluding NaN. d1 _! i/ K" }+ j6 E
' K% x; w$ R& f2 B2 Y

$ m/ Z( g6 b/ [7 q" ~) j
" P8 ?8 ^  ~, S; C6 V基础知识
. \; A8 T# C; r' l9 w
协方差(Covariance):

! E+ a/ y! t5 Z* B/ r
' f+ ~# q9 V: p9 `$ e- G对于两个随机变量向量A和B,那二者之间的协方差定义为:
- B; F- Z( m5 W; R7 h9 @/ q+ M5 E6 R8 Y# @  m5 P

+ i. A. J2 K* [$ D0 N
; D0 U, G' N1 n' y( c! ~其中表示向量A的均值,表示向量B的均值。: s0 Q- u. z& z) U9 j- J
: o4 T) C8 d& H+ u, D+ Y
协方差矩阵( covariance matrix):

" Q7 L$ M1 e+ }! h/ z+ u5 y4 D
两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,
& s( o/ h# c" C& X, {
0 x' U' y  P! G# G* }9 \* w( F
% e* _" p: q. }+ j, b: v- ^
- V4 p  `: B4 }# M# q矩阵的协方差:

3 I* u9 ~0 M& F# f1 \' i( M4 o, {% G3 ]% A6 k" M' g1 r+ u
对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法
& u' ]$ c- |6 g3 f8 E" t, ]! f3 l; U  l) v! S
4 S0 V3 ?9 F: f7 ^& c. @7 I8 `
! \1 F6 ^( \3 [2 Q5 f4 B
方差:(这是赠送的)

3 B; b4 r+ Y( O% O* X' V" C$ R( j$ W8 W# s; T) t+ e( R0 @
对于由N个标量观测组成的随机变量向量A,方差定义为
) ?0 ?, m$ l- I* Q) m( L, C
6 L" _& P4 |7 _( F , b: I7 T5 U( g1 ?

7 f8 M: f! V+ v9 R8 y+ R* x( D其中u是A的均值:
6 e0 e. K! h- n! y- k: e- j8 R( @- k5 g/ K( v- u6 E! X0 ~* H/ j& h" E

* t" k0 I3 j' |) y) c- ]. G( o% K( B/ F* w* ~, s+ q
一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.) j% a: Z* f" c! T+ Y
2 s$ O3 r2 J/ g% j# |
(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)
4 _* Z+ e4 |) d# i4 f! T4 A* g
7 }3 u3 H' \) \3 ]. a
  x2 f# k5 ?3 X1 g& UMATLAB中的 cov
8 ]: }6 Z- L: ^0 U4 o  `
; `! |# }3 T( E% T5 z
语法格式:
7 X9 b* y# w* i* [: ]$ D# a1 ~3 l
3 X# A* P% N$ z/ f0 Q0 w0 i : D" I" w5 w6 t  x. @% r5 t3 d

5 ]9 E3 q' _) }7 p) q" ^下面逐个讲解:
* ?2 g9 ^& y  I
* }9 L% f- W4 R. FC = cov(A)
* ?* |3 G$ b+ Z7 b

: |5 B7 m6 k# x+ T8 _2 nC = cov(A) returns the covariance.
! i/ Y7 d/ }: S0 R! T$ \6 J( W6 B  |1 s8 x
C = cov(A)返回协方差。& L/ ~: v: \7 s# }: \" h- a) U

7 Y' K8 s9 F, F1 l7 p6 F# Z
  • If A is a vector of observations, C is the scalar-valued variance.' I; M" [! a, F' ^

. f- `& d4 [/ G: t
  • 如果A是一个观测向量,那么C是一个标量值的方差。
    ( J% Y) M7 T6 P, N
6 v$ M/ x1 t3 s
  • 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.4 Y: a1 ]# P  ^

0 o  }" J$ k/ U% d
  • 如果A是矩阵,其列表示随机变量,其行表示观测值,则C是协方差矩阵,沿对角线具有相应的列方差。(协方差矩阵的协方差是列的协方差值)( {* o/ N: _" f; Z9 `7 w- ]- g7 d

1 A6 O+ i) z, l8 d: u
  • C is normalized by the number of observations-1. If there is only one observation, it is normalized by 1.7 _' R, y$ Y0 d  Q6 i6 w& h9 ~
! \* e( U& I1 P% n2 v
  • C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。
    ; v2 K/ `% G, B/ `! G

, V: s7 B, R3 P
  • If A is a scalar, cov(A) returns 0. If A is an empty array, cov(A)returns NaN.
    3 K, _! i8 S5 E& C' E1 X# D! b+ Q( U
1 ~: z8 g. a1 v" `
  • 如果A是标量,则cov(A)返回0.如果A是空数组,则cov(A)返回NaN。$ s, V, A1 B% a! d9 L4 L

6 l& B9 W" r  {2 ?(你看看人家考虑的多周全!): z- N5 z+ i6 \. c+ N
7 d8 g! j1 t+ ~6 F, v
- U; Y* ?# A3 D  o
C = cov(A,B)

8 @+ e% U' Z) ?
& }, Y2 s) A. YC = cov(A,B) returns the covariance between two random variables A and B.4 o, C" p: R) b; \* h; p' Y, s
% W0 U1 O! o+ X6 b9 s
C = cov(A,B) 返回两个随机变量A和B之间协方差。6 {  n/ [. Y8 C

: g) G$ p$ ^; h/ `! F' F, D
  • If A and B are vectors of observations with equal length, cov(A,B) is the 2-by-2 covariance matrix.
    $ Q; z7 ?  U( l% D$ N

" V/ E4 c; V  v& g1 Y' i
  • 如果A和B是同等长度的观测向量,那么C是一个2*2的协方差矩阵。$ F1 q# y" q" q

7 y6 [9 X/ m7 v1 F; D
  • 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.
    - m5 J) E4 y9 ]3 M# ]5 u- j
$ t8 u! i8 o) i2 J, \6 ^% W- r: G
  • 如果A和B是观察矩阵,则cov(A,B)将A和B视为向量,并且等同于cov(A(,B(:))。 A和B必须具有相同的大小。
    4 ^) |/ Z  r5 E% p4 Z' b

- b4 b$ ~. H" H9 E0 I
  • 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.
    " p7 A8 A. D# L4 k: d/ O
  ]$ W* ~$ z+ d0 J( J' @7 A/ t
  • 如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。
    ) |  ?/ ?- G: L' p+ T  t/ r
' z( U  D& j+ `% u4 E- X

% L+ E" Y1 ?" I1 I% N1 P! d9 Y! K% c0 y+ |# e9 n- P9 a
C = cov(___,w)
0 p# g6 u# L( o  L" @
. q8 I+ T  b6 C0 _) b- K, |5 L2 p
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.- H% K$ M; X. M( \( M% ^
9 R* s8 e0 n# H3 A' E5 n: b2 R
C = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。7 l% M1 r6 q7 ]! Z. o; ^
% j/ X# M* J8 {( x9 J. j: {/ m

6 E$ ~+ k# y# V3 M+ W3 pC = cov(___,nanflag)
5 b; l* ^3 @' s$ y$ m& g( S4 I4 e
! Y# f* j, D/ v8 }9 n6 w
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.. d3 W7 \$ E" U( L: H) J
/ E. N, M$ o5 g6 e/ D0 ~6 o
C = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。6 c% p" l. W& m' h
8 X, @% f4 j4 O/ z8 w! n( x

. z1 O) A; i& j. B2 m示例

. @" Z' [" k4 @. a8 d/ Z% x8 a0 v
下面举例说明重要的语法格式:
! D9 S2 k4 k4 ~0 Y2 b5 }$ F$ [1 M2 L1 n  ^% w  |9 H
C = cov(A) 举例(矩阵的协方差)
! i# \- H  k- @- Q$ H% t$ s
  o2 G- G& L7 @) {6 ]
Create a 3-by-4 matrix and compute its covariance. [0 z9 S$ ]8 Q& r5 }1 p
. U9 T3 h' f0 o5 c+ @
  • A = [5 0 3 7; 1 -5 7 3; 4 9 8 10];
  • C = cov(A)
    / ~/ ?& U2 X# q0 i. S& G

4 k7 e) J7 S' W4 d7 l1 q3 U& z" J# T7 ?) [$ N* g, l% L4 t
; V" q7 C* ^6 H$ k3 K* C

" v1 R" _; w6 k/ J2 C& S
  • C = 4×4
  • 4 ^/ Y* U2 V) m; l& h3 I
  •     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

  • 9 Y8 |1 R# M' ]/ {. C

    + a9 M& p/ b$ L: B& B
  % u& k7 n  ?* s( }/ C) x
8 r4 m( G' G# I/ `, ~
3 P8 g7 B. o& L: `
Since the number of columns of A is 4, the result is a 4-by-4 matrix.
/ |- U0 Y% Q4 _* T+ m
0 G" D! S, T; M8 u由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。
# ]: c0 t; T9 W0 o" l( \) i2 M. Z4 b5 G

" e9 E, R! `0 j2 Kcov(A,B) 举例之两个向量之间的协方差
+ v) j9 j# J# w3 l3 y; A

: E& x8 m) _7 t# Z9 q* C1. Create two vectors and compute their 2-by-2 covariance matrix.
( b( M8 p- u5 Z5 P  W
! z6 Y6 S1 s) a3 l% l
  • A = [3 6 4];
  • B = [7 12 -9];
  • cov(A,B)6 l# S: |, c& R0 B% m$ j, P

" p! C+ W+ G8 J& e7 _6 T7 f( C0 \1 J  n
( |: [; `: W$ ]9 b) }* a
" D. ~( {7 T9 b* V: }8 g* T( A5 E
  • ans = 2×2
  • + g" x# J" C( U9 d, V- t4 K# B
  •     2.3333    6.8333
  •     6.8333  120.3333/ J6 c) r' v- d9 B. @+ L3 E0 J

! P. V+ b9 [+ O. v5 T( Q
1 f  x0 B6 R( T" {7 W8 ?. F

' U8 U9 c# y; }* M
2 A/ w+ Y; u7 q. zcov(A,B) 举例之两个矩阵之间的协方差

' m0 e, @+ e3 n& y) |- I  R1 W  l2 ^" T
2. Create two matrices of the same size and compute their 2-by-2 covariance.0 w) J2 D0 ^, E2 I1 h
* O* J( Y8 ~% E& `0 |* L. L
  • A = [2 0 -9; 3 4 1];
  • B = [5 2 6; -4 4 9];
  • cov(A,B)  g* n3 l( d1 K+ U2 a
/ `& ^% K+ l/ A, T; }3 b9 Y
6 P. {9 O& A1 w/ p; `

8 O$ K, Z4 N# {! R; C* c% B0 `
* H7 W2 _! v6 x- r
  • ans = 2×2

  • 8 Y. }- p) v! a+ o
  •    22.1667   -6.9333
  •    -6.9333   19.46670 p2 \" |" b' F3 S. ?% e: m* E# f

/ U- C/ }( K; Z( ^& C3 }* l
. G3 v" n. U+ C0 J' K
2 `4 x% o1 z9 q7 n
% V  I8 W; g* c+ ^8 G! Y! z& x
这相当于求A(:)和B(:)的协方差,如下验证下:

/ ~0 M* r* Z9 W6 j
7 m$ x+ [; J3 H2 o
+ w& j2 H( Q: P
6 i$ O2 f1 ]/ i: e2 }" j 2 a: h6 L, x' ~4 {1 j0 f$ ?3 B9 \0 \
% k9 f1 J  U6 H" D
5 T* E- H+ b* ]8 m% ~+ @

6 ^' N% A( W. f对比下cov(A,B)发现是一致的:
. z( C5 ?; X- d, G( z6 l9 _# N, q" w; |9 C
. w. u# }8 H" W8 b- b

) q5 g) f5 @# u' S: C  F
- H4 r/ _/ P6 b. J3 D7 jSpecify Normalization Weight
8 h. R; `) e/ j1 [: P

7 Z+ T, n3 Y& X6 a6 D4 ^/ e6 J创建一个矩阵并计算由行数归一化的协方差。
# W$ j- f& K9 ], e7 ?3 o
) }$ q" O; J0 s' O  ]
  • A = [1 3 -7; 3 9 2; -5 4 6];
  • C = cov(A,1)  H  H9 V9 p/ S! ]! F) F# M

$ I2 v, I$ E) ~- R  f
$ e" ^) _* y, h7 g
  • C = 3×3

  • / _$ E, q: Y2 f" x- e6 u
  •    11.5556    5.1111  -10.2222
  •     5.1111    6.8889    5.2222
  •   -10.2222    5.2222   29.5556; }- r! r% F% V* }# C) h, @
4 y' I, y" \( S

# r' J$ k  _# X/ x8 u. n- d* ~
/ t1 H0 J/ D% g; k/ q7 I4 k

6 t0 X; O1 I. r4 L. Z我觉得还是有必要比较下不归一化的情况:
7 J/ _/ w' ?+ S$ b: S
4 |+ }8 ^& J0 \4 S( A4 Y>> A = [1 3 -7; 3 9 2; -5 4 6]
2 p  R; G# Y' p0 h
5 C5 q! }* \! d( DA =) O) ^+ z2 ~5 `% l. }1 q7 y" i" g
5 n( @" P" v# q; ^
     1     3    -77 ]1 Q0 Q# E6 S( ~5 w  T# x
     3     9     2: V& N1 w4 l$ Z3 F3 W
    -5     4     6
) _& H# d, l6 x( `5 x# m7 i  q7 N0 O
>> C = cov(A,1)+ v% _6 t, w' |! z+ q
6 F3 g7 T# h" y5 c* o
C =
, N7 M3 e$ o4 T; e' H/ B8 }% R- _4 ]/ ^. E
   11.5556    5.1111  -10.2222
+ I% N* M. U7 c; r$ ]" \/ t# X    5.1111    6.8889    5.2222
( y8 V! F  P! j! {) A+ r  -10.2222    5.2222   29.5556
/ A; ~5 y" }% n5 m0 F0 c) ~' I, h
, |$ ^) O+ v) k! R7 t>> C = cov(A)
" P% _5 Z9 i+ h$ T* V6 i! c3 {% p! c" L3 d% v- W
C =# j+ @3 g7 x! }6 C: c3 X2 C

2 C; z) Q; |! O8 z1 o   17.3333    7.6667  -15.3333
: j/ a0 R' z9 O    7.6667   10.3333    7.8333: W( d( g% X& s8 m
  -15.3333    7.8333   44.3333
. S& z# [/ E; ]4 e$ N: c  R/ S; m2 a1 a3 E

9 w: q5 B8 A' K0 kCovariance Excluding NaN
! `( |( Z3 j- r9 @! X  Q

* e+ R; a/ n3 u1 P& R2 w创建矩阵并计算其协方差,排除包含NaN值的任何行。$ F$ ^" k: a$ e0 ^6 ?
! Z) }: h+ r% N3 n  H& s8 D
A = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]
4 e6 }3 D- b7 h% ?$ ]7 G' u( \( z3 U
6 s0 s3 n9 c) a& z4 y) G) c
  • A = 3×3

  • ; F" i# e, Y7 c+ c  C/ i: R
  •     1.7700   -0.0050    3.9800
  •        NaN   -2.9500       NaN
  •     2.5400    0.1900    1.0100

  • " ~. X) L' a5 Q- ~7 y1 U
    7 p" L5 k0 }2 T: y. Z' a6 N' S4 s
  
  G+ g0 h# l& H- o. p1 e- ]3 c  c- r3 \' `8 y
C = cov(A,'omitrows')
3 t- D% H0 D; ]8 O' l, I9 ~

( h) O# r# Z- t: [7 c
  • C = 3×3
  • + I4 s: I& O. s! P4 F6 j) N# z- [
  •     0.2964    0.0751   -1.1435
  •     0.0751    0.0190   -0.2896
  •    -1.1435   -0.2896    4.4104

  • 2 y: n9 t: o- b( @5 \& d4 u
      x: C0 U8 V  r6 H1 x; U

( K3 g: |& \! h3 ^. n! k$ V$ _; A; h' K6 W2 ]
1 z  z3 l2 h$ r7 w
3 a. g0 T) E; j/ L+ z" e) F7 r1 c( c

8 g/ x* [$ X6 u7 y
9 k8 ]) L: B- Y
: q+ l2 a- w. [6 X$ [7 p. h
& U* v. P$ D& \+ M

. P% B8 H7 n  q( W9 i
: X; `4 `6 D1 D3 |; F. X8 D % |" h, {- V4 L8 U7 ^

5 ?9 i5 a: Q# z, E$ i  }# _$ {2 A7 q
8 M& E- E8 w/ o/ o' _7 G- ?; u
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-31 10:37 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表