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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

8 F$ h6 |5 q! x! i0 N6 X& pCovariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。
$ a; T7 L) S5 ?9 y' z/ k7 P5 S. M# b! f  n* M. k! Y  ]
本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。: z. q- u* c! D: K9 [/ ]

# O- R) V+ e4 Q2 r废话就说到这里,下面正式开始介绍。# ?7 b7 s& [  }
& ^$ I8 `" U1 W
目录
$ T8 K. j+ W7 `3 e
$ i0 O; \" e; e2 p基础知识
. q0 [# Y) {6 A2 F. D6 A) Y; h
; R5 F/ U4 F& r2 }$ w% A/ H协方差(Covariance):
0 o  p1 J8 N9 f- T$ J
& G) X( q( c  @* S3 R) s协方差矩阵( covariance matrix):( |9 w/ S+ V7 A1 Q" @9 p" `$ Y

; E% t, N6 V$ p- j8 M3 @( {4 Y; s矩阵的协方差:
  L0 b/ o* ?7 Y  S/ d  V0 u/ y9 X2 ~4 l# }, L" B; J0 f9 J
方差:(这是赠送的)
, |8 B7 a" P6 n* ?$ V+ S
7 U$ i" K5 G) TMATLAB中的 cov
1 Q3 Y' U: ]( d2 S  U$ y# |0 I* r) Q1 g9 i+ Z
语法格式:
1 M2 L& B; |  t4 H5 K; o; s. t1 f' B4 D
- l. G6 L+ l8 R1 ~" i! `C = cov(A)
2 H. S! S, J( @! H( b# W1 h3 `$ Z  u9 P; a
C = cov(A,B) , _2 O, @* R( S* H  j0 b/ M

; \3 i" ?( p+ o/ D" P; X. ~: sC = cov(___,w)
# W5 D9 c# ^* _) E$ Y4 L
5 ]; [1 A. U1 z9 e2 ^/ [" qC = cov(___,nanflag): x" a' c9 H4 x5 ?

- z% Z, C* V: s' c& u示例6 ?: V9 D; k2 D& M

: X; {; a) E4 l) z1 aC = cov(A) 举例(矩阵的协方差)0 f! L+ Z* m0 L. f

- U) O( X6 w- Tcov(A,B) 举例之两个向量之间的协方差
0 ^8 f! Q5 \5 l% u4 ]
9 I. X7 r, a) @7 e* x- [" {. Y2 O. lcov(A,B) 举例之两个矩阵之间的协方差
; w+ E8 `- }; n+ D) X5 G. p4 k( S( @0 r$ D
Specify Normalization Weight- n, \1 f+ T4 o1 F( Q1 l

/ U- y. \" w0 _: \Covariance Excluding NaN) K/ R9 M* T' Q- ~5 T
2 J/ B1 x1 I0 `; O! ^  t
+ _: t4 J0 e4 ]7 I: N) Y1 I- c
/ F6 z1 v# n% ^4 b
基础知识
: l! p% ]+ {4 F4 M, ]& Y
协方差(Covariance):

+ R" V' m4 R; ]. R4 N! j% A$ S) M: R. w
对于两个随机变量向量A和B,那二者之间的协方差定义为:
6 T- r. Z+ n/ O& b4 `0 b( Q
3 Z6 J  o& }- k8 M 5 \) V% }/ N- b- u

" W' M3 q0 o: s: B) W其中表示向量A的均值,表示向量B的均值。/ l% \  w* m0 @  _% y7 O/ ~7 h7 r( t
) r, Y: w/ t% r
协方差矩阵( covariance matrix):
  s$ Q7 r* z/ g/ d8 V* O
% v- C' ^! W0 \- P6 ~0 e' h  y" o
两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,
% j0 z9 x+ p$ D! x8 w; Q, U& T  _( ?: i8 W$ {$ e
+ d  {. y2 R; f

: S9 c& r. Y* p# _3 G矩阵的协方差:
% u1 T3 I  J3 g. R

7 _2 M% h7 J2 F( a对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法) r( \- S" i1 l7 ^" N1 Y; B2 ]

$ l% i# v3 f5 I6 u ) N& t0 M& Q9 i- i
9 \+ J' B  o( N: Z! m/ n6 j4 s/ k
方差:(这是赠送的)

) t) j; x0 K  Y7 ~9 ~; d; T) ?7 u
对于由N个标量观测组成的随机变量向量A,方差定义为
/ j! D) h" z' s0 N5 X0 ?
0 e" N9 f2 n- u$ Z% ?% B
; d" o' G8 I8 ~) n7 r. ?  H  t, r. |) O. i  k4 n, b8 x0 s
其中u是A的均值:
$ b/ r+ t: x( c  U* a' w
1 C2 c  C+ `" v " R# V0 y/ V3 k
% w1 D& o. k! a/ K( l, i2 D
一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.
% g, x8 I0 V8 c7 p* B4 V$ @6 ^  y
# q$ I+ L2 M, i(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)
2 F7 o; }0 @. I8 e
* S; ~/ D0 D4 v: k, I' S4 T+ s9 \
MATLAB中的 cov

$ N( D( [9 ]) a/ V+ h$ q
- @. T% o$ r/ y* e语法格式:+ g( b! D2 C1 Z* F# e+ [

4 u5 \0 C  i6 _+ Z . s: e$ V# h2 g/ p

5 A7 y5 P8 A  O下面逐个讲解:4 `; Y$ _: q' q

. X. T+ b3 u3 B/ A2 eC = cov(A)
6 R& X1 N+ x% L( C: o" `8 C0 ~$ k/ F

) Z# g6 U* t7 M( SC = cov(A) returns the covariance., `5 P# J3 `+ I# @& s1 `' D
: r7 t1 y" s9 q, N6 D3 t
C = cov(A)返回协方差。  U* l$ _8 e$ m
% \$ w$ [3 l2 M8 l) f# j( x
  • If A is a vector of observations, C is the scalar-valued variance.- q' g# b6 N9 J& |  ?6 w
% j- p3 u" A9 {5 A' g: t8 C
  • 如果A是一个观测向量,那么C是一个标量值的方差。
    : U6 R  p7 N5 N/ }' G0 e
7 H  F, _; v/ y3 L& i
  • 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.
    - d/ s! @- y* N+ U
0 H7 u: c& b* J0 A/ U2 Q7 g
  • 如果A是矩阵,其列表示随机变量,其行表示观测值,则C是协方差矩阵,沿对角线具有相应的列方差。(协方差矩阵的协方差是列的协方差值)
    ) f3 L1 p. \  K
( i9 `2 ~1 V7 R; k$ o: F; [% y( A
  • C is normalized by the number of observations-1. If there is only one observation, it is normalized by 1.. w) j6 M* N: n6 V7 @
5 w4 w0 y% j& F5 `
  • C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。
    ) o3 f6 I3 T6 }  w# r  f

" s/ s/ a( b* x$ A* T; K( K% b9 n
  • If A is a scalar, cov(A) returns 0. If A is an empty array, cov(A)returns NaN.
      P: G4 [* @7 Q3 X9 x$ a* K8 q
' u0 k7 R3 N5 D0 x* b
  • 如果A是标量,则cov(A)返回0.如果A是空数组,则cov(A)返回NaN。" L8 ?2 A( [6 m& A# x% B$ W
% _& K" u5 n2 M6 T. m4 v5 W  \) l5 i
(你看看人家考虑的多周全!)
/ F6 @8 w7 F: R+ O$ F9 y& ?8 k- E/ G: c; {/ r* q
0 D; q7 d, x& K5 I: w7 u2 f' e
C = cov(A,B)
5 Z' X  T2 I- ^$ e2 p/ M5 Z
  [' e# _/ b0 t) X9 r
C = cov(A,B) returns the covariance between two random variables A and B.6 r9 E, S) t; ?# k8 U5 h+ f$ r
4 V/ S0 D( C# v8 x* _( D0 I+ X
C = cov(A,B) 返回两个随机变量A和B之间协方差。" j/ j8 m0 J- N$ }9 o
! U8 m: D9 I( k2 j. v) j
  • If A and B are vectors of observations with equal length, cov(A,B) is the 2-by-2 covariance matrix.- u/ q; {  b: D, T6 W9 r
% M$ O4 w$ O2 x. h: U
  • 如果A和B是同等长度的观测向量,那么C是一个2*2的协方差矩阵。
    $ X* X. ?# s) j+ w$ x, e5 G3 v  s/ b

9 Y( @6 ]3 {2 a9 c! \4 `
  • 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.
    / ~" {$ P; P3 ?0 b( G) Q
# f' v5 S' [6 ]0 D
  • 如果A和B是观察矩阵,则cov(A,B)将A和B视为向量,并且等同于cov(A(,B(:))。 A和B必须具有相同的大小。. t& g+ z$ D  N; M- ~

2 n/ ^, ^6 ~& k: H
  • 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.
    , @1 k! N+ O- j$ X6 Z* u  D

' E' Z6 n7 E! h* }* U
  • 如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。
    ( T( C. r9 E; p5 N( n+ M3 h
5 b6 j& o, Y0 V( ?2 A3 l
' N) ~9 M: a* |8 I. v

: r; {3 V: Q% k- pC = cov(___,w)

+ w6 C" k1 J! ~- j, N
' C3 ]3 J& n; G, C% EC = 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.* _/ O4 @: I' w# T

$ Q, P. w6 o" Y9 O! @C = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。4 ]& H$ s4 h5 x4 M2 e

* m; N! Q" D( |& ^# V' H
( X* d  f, w/ {$ x, I8 CC = cov(___,nanflag)

9 t3 \$ M* a" q8 ^# ~& F  X
( Q8 c1 b2 c6 `: tC = 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.3 v& M3 r1 V" C; U
. k- J6 q+ b7 F! L1 l2 G+ m
C = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。
! w* E3 G( R6 n0 i" [+ w) @+ ]& d. L$ e
( F/ I2 [. e: i! r5 X
示例
: ?% N1 A; d0 f# S5 j7 O3 R9 z' K

  `5 P* V. f8 f( V下面举例说明重要的语法格式:7 e* p2 J9 {3 B) b) O2 U

3 |: |. O; M+ }C = cov(A) 举例(矩阵的协方差)

) P/ V7 `) Q% X% s' l. {4 Z) Y; h* a' _# j& x3 H! D) W% F
Create a 3-by-4 matrix and compute its covariance* Q; m9 S/ K* n

, m$ t. ^8 S8 R
  • A = [5 0 3 7; 1 -5 7 3; 4 9 8 10];
  • C = cov(A)5 ?1 v- k! S: J. t3 Q3 {& P6 B

' ]: d6 _4 G4 |, Z
$ D) K8 {# l  f) d1 A, A$ G. }( O

2 U* |/ T0 x+ K& i9 o/ C+ s3 O! @6 {; u  l, A
  • C = 4×4

  • 7 f* d/ G; A1 x& Z, m  l8 ~
  •     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

  • ; f! W3 Q8 e! G, P0 z2 X  m7 p
    % g, B3 j. A( X/ A* R
  
4 n! {7 o% K5 ?! K& |
, `) r" W" h  p$ A, O* i

1 P& \% z" r* {6 O" e. USince the number of columns of A is 4, the result is a 4-by-4 matrix.% u7 D- `4 Q( t6 w) ~& z; u% d

6 P; k2 v0 f/ k+ F8 |$ i) q由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。0 \+ ]- B! C3 A
, H0 h1 g- B  l5 F0 \
( V$ @4 W) u2 o% O
cov(A,B) 举例之两个向量之间的协方差

0 b7 k" U. n7 F- e" L4 `$ f, F4 {1 l* j
1. Create two vectors and compute their 2-by-2 covariance matrix.3 B% R9 s7 ]' o( g5 `  ~1 o0 d

. `* o4 q5 t# b& C
  • A = [3 6 4];
  • B = [7 12 -9];
  • cov(A,B)
    ( ^# M. o3 F5 R# g0 ^# j( o, {

2 G. y4 |) x0 b0 n0 A! |% u6 |' m( ]" k" O4 S9 ^

2 b# h: S# z, K+ \% t2 x8 @4 |5 N2 D4 I3 z7 {0 o& r, Y9 h
  • ans = 2×2

  • * _! W' l4 {; z  b7 ]
  •     2.3333    6.8333
  •     6.8333  120.3333# W8 x9 f7 B0 y( B& J- ^. X! s

) d* ~8 u3 _- p# J0 e5 h% ^# W7 @# q( K( ^2 y3 q0 e0 O# D# s

- B* `! `& t3 ?: k8 L" M2 |4 G0 V2 v) ~( e
cov(A,B) 举例之两个矩阵之间的协方差

( T. D, U( p3 ~. A' x! U2 K8 E; l$ A+ _3 A0 L
2. Create two matrices of the same size and compute their 2-by-2 covariance.: \8 ]# U$ ~; }( z4 p$ n! H$ P

7 y2 X( N9 j5 N( q3 M
  • A = [2 0 -9; 3 4 1];
  • B = [5 2 6; -4 4 9];
  • cov(A,B)8 f2 b5 P/ j% _( o

* i8 Z$ I9 A+ R( E7 [1 Y' K
1 J" P# x3 j" V+ C6 y% H

( }8 ?5 F7 a) h) {  `9 B
) d( G+ T8 t* E2 A5 v( N  _
  • ans = 2×2
  • 5 w3 f; N, T) z0 h5 [1 v
  •    22.1667   -6.9333
  •    -6.9333   19.4667
    & S& J; h  E! H

5 d4 t, g0 h, V# U: B) N! v+ X# D- A; }( h1 V+ @4 r

5 V% ~0 v9 Q- ?8 ]0 m
+ _+ P1 Y% u  g* H3 y这相当于求A(:)和B(:)的协方差,如下验证下:

# l% X+ l4 U8 |, _: y1 [, d) Z2 D# e" C4 u6 }" t

2 I) X. _0 C! L# _; Q8 @, `
8 [8 T( I' e" d) s  v9 x
* s0 \3 a+ R* |* g- i. m% X4 b/ I) R

% w5 Q0 I# l8 G! t: c, J; B3 H2 \' R2 H* |4 N4 R" e3 }
对比下cov(A,B)发现是一致的:7 i0 n8 F" J& [1 E2 V& g
. ~: n* y# v+ s7 D1 }
- N; s0 c" l0 n9 K: o

8 Q( U/ O7 U. R; F6 q2 b$ G% s/ K; }% l3 b, Q0 [
Specify Normalization Weight
& E4 v0 \! }" @0 K

3 M( E  L: w0 _; ^- m0 _/ D" \) S! b创建一个矩阵并计算由行数归一化的协方差。
' n8 h! W" r, f, d' a4 u
' k* f- q5 F, |5 w# Z7 V
  • A = [1 3 -7; 3 9 2; -5 4 6];
  • C = cov(A,1)
    3 F; g$ o) `2 l8 K

4 e* H( w% H. Y+ I8 U2 [" V
+ B& {" |+ W5 M* r
  • C = 3×3

  • 2 X& y- W6 Z2 N, O' k
  •    11.5556    5.1111  -10.2222
  •     5.1111    6.8889    5.2222
  •   -10.2222    5.2222   29.55564 |" S4 _* d+ \* C

2 R( `% o7 d( [& s. a4 r, W, i4 ?$ Q" f0 I

" {/ e, z6 [! b0 v
: ?4 P$ o6 G" p. I8 w2 I9 W我觉得还是有必要比较下不归一化的情况:
8 {7 x( T; ?8 I) B
! D$ ]; v* h2 {" K# I- G>> A = [1 3 -7; 3 9 2; -5 4 6]2 U* l  a6 P) }2 _8 X: Y
) N5 ^- Q/ y( H/ r9 N
A =
9 V( Z2 [  ]0 }3 b3 l; {2 S4 o* K
' Z7 k/ w1 M9 f. J! H     1     3    -7
. L5 i/ Y8 a3 S     3     9     2
: k! [* f3 y* H7 M3 H    -5     4     6
$ |$ s) [8 p3 H6 I' n+ S* Y& b
* |3 S$ P. p; t1 l>> C = cov(A,1)
% F# E$ a2 n4 T8 E
) c) k: s9 B+ z9 J) }. f9 \  EC =
5 X% W, v! h! G/ N; N: N; u* y) z8 G( f  p, a$ a; x
   11.5556    5.1111  -10.22228 L/ f2 V1 k2 N9 g. o
    5.1111    6.8889    5.22228 W% c3 h6 m! [. g/ b
  -10.2222    5.2222   29.5556
( I+ E/ S  x( }, ]& ~: h- B& z9 l: ]. q! t7 t) T& w& U/ J
>> C = cov(A)& R8 Y$ ~! P( T% E/ O" ?) z4 ]
: i0 ?7 a* N5 b7 P: E) [+ `
C =. }, D" c2 P$ F! z3 x
/ s$ j" _# y/ ~+ q
   17.3333    7.6667  -15.3333* g: A6 W4 W3 a$ b4 a0 e" k1 w
    7.6667   10.3333    7.8333
" r- Z$ f& B3 Q; j  -15.3333    7.8333   44.3333
+ g6 q3 d. ?8 I, a5 B5 W4 r1 t% V, l
6 e1 U' U5 x0 o, R% p* b: x
Covariance Excluding NaN

9 s. Q; t& D( j0 v' S
: A& [* I0 i# c* Y2 M9 J5 {% H6 g创建矩阵并计算其协方差,排除包含NaN值的任何行。
8 o1 j( Z* {  B' d8 ?7 g: r1 t1 e! q" ~! h3 p, q
A = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]

4 T9 e; m$ D; U" S. K$ t0 i1 S# i1 g  F5 C* E3 E
  • A = 3×3

  •   O# q1 e7 X# o
  •     1.7700   -0.0050    3.9800
  •        NaN   -2.9500       NaN
  •     2.5400    0.1900    1.0100

  • # H/ b* P, ^+ d5 a( {2 d8 B

    * M$ N8 g& x( |! _4 G
  * ?# ~/ V# v  [: ~

! @. t/ o5 G, _7 gC = cov(A,'omitrows')
& E, p9 X/ {; ?& a& Y4 y

" a  M/ e, v5 I! X
  • C = 3×3
  • 1 ?5 E- ]( u' U2 G& C  g; w- R
  •     0.2964    0.0751   -1.1435
  •     0.0751    0.0190   -0.2896
  •    -1.1435   -0.2896    4.4104
  • 6 X3 h$ v" Z9 S
    & ]: K5 V( n9 N% I
" G6 u3 v6 W' c7 U+ [7 o' ?

8 U& }4 E+ K$ S; z0 M

' a# e3 Z- P- s8 A+ K1 L8 ~( i# `0 U" C7 U

* L8 }1 i) l6 v% s/ ]: `1 C0 Z% h" @6 k$ B" X( r

% R' Z" O) W: U: p  @
" J& Z2 v+ Z  @" W
2 M. w, ?$ X- c: J

+ H& c3 k0 {0 d' ~5 h* c) X" l) M
; c3 |, a1 `8 x7 T
) ~- `1 F! z4 g# f" P; o  f
& a8 t: N" q0 N
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-20 06:38 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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