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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
* W& M1 X& p6 y2 q8 ~$ D
Covariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。' y" r7 ?% ]- s

4 V: i2 ~+ N' W4 F; y7 u本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。
5 a' e) C* L; d% o! z& S" s- D4 G
废话就说到这里,下面正式开始介绍。9 R$ G, L  ?' l( K7 U1 G. p
* t1 J! G7 W# c
目录* `" ^, U: \9 z

" o% \+ {- v  T5 A! @# S基础知识
1 w6 k6 W/ Y* A- S& T$ f7 ~: [
% T0 w0 P$ i: @协方差(Covariance):3 E/ h- U3 D; ?& \5 i8 P" e

  w- j' E" C4 |! Q协方差矩阵( covariance matrix):* T, V/ Z. ]0 W
/ B& T/ z* h% s
矩阵的协方差:1 s* A( g# h3 i
! R0 d# x: p7 g& a
方差:(这是赠送的)
# \- ^2 \5 ^9 v) F1 v
+ N4 T" y3 T2 X, k% F+ F/ U9 h  ]* WMATLAB中的 cov
* T5 Z8 D4 D9 L! L3 c1 ~
4 v# w1 l2 D" R! X* y语法格式:
2 C) y8 F* E4 ^5 [4 S
9 [5 j$ Y/ a4 g, J5 I# LC = cov(A)
8 A$ B. i: e, _; ^2 ~+ g7 m/ g' E4 E1 x$ h. I
C = cov(A,B) ' v4 ?6 v$ v$ P& r1 |9 [5 s- Z

* G/ h+ _( ]5 r6 [5 T7 zC = cov(___,w); W2 m) w* T* _0 Q! Z

( Y4 Z' P0 n; S/ kC = cov(___,nanflag)" K7 ^5 l) D& N
; {' V0 j* x* C2 _+ d8 B
示例2 V# f, N+ k* c# G

" w: \# m- m% s6 C/ YC = cov(A) 举例(矩阵的协方差). U/ P; }+ G9 m3 s

2 v2 {% v/ r/ V6 u. Gcov(A,B) 举例之两个向量之间的协方差* t6 T1 U0 I9 p# r# b* w

0 ^5 S2 i4 _+ q+ Y! Scov(A,B) 举例之两个矩阵之间的协方差
% s. E' a, h' k) [) @8 }5 N. h: d: S7 A% ^$ c) s9 X1 S
Specify Normalization Weight0 t* ~' R9 A8 _8 d& s& z$ h2 I4 O
8 G# c7 l2 T. Q4 f3 S1 a1 d' c
Covariance Excluding NaN
1 A+ [1 s& p$ o3 H- d& ]" D. J& g, K  y) E/ n4 C

7 h* f9 r/ X+ N' M; S  m3 F& }) x
基础知识

9 q. i1 S* w* L: h" h; _: b+ @: r协方差(Covariance):

+ @3 c" y: f8 p2 S7 e9 z' s1 |6 o. c% J1 s% \
对于两个随机变量向量A和B,那二者之间的协方差定义为:9 L; B; c0 i; V$ M, f+ q
" N9 Z! I8 y; E& o8 s+ h

* J- P; h3 R: B, b9 [" O1 \9 k
: A% O" q) ]( h$ w. c2 g其中表示向量A的均值,表示向量B的均值。0 ~1 J2 _6 P9 Q& b1 s
2 \1 x- a, D$ P; O( \! U1 j/ g* j
协方差矩阵( covariance matrix):
# \: [" S5 t! J5 G( u. W

5 Q* K3 H4 B7 \+ O6 f$ F! ~两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,5 t6 {: y4 S; ~& m3 J6 l
- N6 ]. S$ z+ o* _* Z/ |. {. m4 |

3 e! n# w# R& O$ B9 t
5 z( g0 t7 }- D' x8 F; h0 z, o* s矩阵的协方差:

% r3 N1 B  `* ~4 _2 H( A6 S" ^! S( T
对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法
& J& M( t" X+ }8 ]. R% ]
' v3 _6 a6 y0 C9 P, p. [. r! n
0 W0 c2 E7 P2 v8 j  W8 ?; c' ^2 W6 G1 e8 T/ j% K  ?7 ~
方差:(这是赠送的)

; C! l3 i% ^3 N8 L6 ^' \; j3 Y$ D/ ?" o4 f, ~* R& D/ o
对于由N个标量观测组成的随机变量向量A,方差定义为
9 \: ]! F+ J0 {& X" v
. x! j2 ?5 G  q0 }8 j $ z$ n& X  {. t! p! c: `
+ c, N% z$ V; d& |9 N5 C
其中u是A的均值:. }4 ~4 o( E9 {% s

" a5 e5 C# u- o) d ( Y4 S* l. E3 M2 G

9 v, a6 ]- J& ?. x2 d* b& a) ?; \一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.
# U% e$ S: W, x
( n2 M) {" u% k, A# |! R# u, j(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)- ]5 i7 I+ b% z* s
4 x) O( ~# {$ t& v, V

/ K" O3 `* i7 Y/ ?* ^MATLAB中的 cov
/ X8 s% P1 u6 i# b( _0 F9 n

1 n! z! }' d) `+ _7 d* U! S2 E. [. H语法格式:# s4 b- \: _7 Q0 k! M& A+ Z
/ @4 r7 Y; d. [& Z+ C9 T; h% M
$ J1 G" H* _0 v0 m( q/ l! [& z: \

" F$ O* q/ |" P, p下面逐个讲解:
% X- ?" b7 x& @
* C7 f4 `2 p1 }C = cov(A)

: I" G  u" ^2 W" q
) n- V1 Q+ o3 n4 [C = cov(A) returns the covariance.1 G+ _7 r2 K6 F9 P

' Q/ l# Q" Q4 L: S/ M$ v3 {; AC = cov(A)返回协方差。
5 @  u# v( n8 n& ~+ g; K! T7 W1 p0 m) M
  • If A is a vector of observations, C is the scalar-valued variance.2 A( C3 g0 h4 a- Y, l0 p* p

" q( T4 }) h' F  s: i
  • 如果A是一个观测向量,那么C是一个标量值的方差。  Y* @* H. `. A% }  J! S- S
; E  a0 H. |9 z
  • 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.+ _9 z! X' @. a; @
- Q1 J/ R" }" R. ]4 _
  • 如果A是矩阵,其列表示随机变量,其行表示观测值,则C是协方差矩阵,沿对角线具有相应的列方差。(协方差矩阵的协方差是列的协方差值)
    . t' ~  x* J+ E/ i0 r

$ f2 u# f  d" D, W4 O1 j6 Y% x+ X6 u* k
  • C is normalized by the number of observations-1. If there is only one observation, it is normalized by 1.# ]5 N9 D* H  H  q( L9 i
  t  k8 z& f+ i2 O5 D, z5 Y4 v
  • C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。
    . [% E/ P8 |3 L: ~9 t$ \# R' F6 v% ~
7 w) y& }! E+ }& x* r
  • If A is a scalar, cov(A) returns 0. If A is an empty array, cov(A)returns NaN.
    ' _$ E2 I; b! @

, B& U+ _% U5 U+ e5 ]% a6 z9 J8 L+ x3 _
  • 如果A是标量,则cov(A)返回0.如果A是空数组,则cov(A)返回NaN。6 F" l4 D& H9 Q% g( A! u

( [! X; Y4 h& b(你看看人家考虑的多周全!)
( \% S3 |: z; d  i! h' n
2 O& t9 b: C! i$ p2 A4 a  P/ F! z0 G4 B: T8 m
C = cov(A,B)

& R& R- ~: h1 F3 p' H
. L% r; ?, u) XC = cov(A,B) returns the covariance between two random variables A and B./ r% N" Q& H+ e$ g% f9 J

0 R! j4 ]6 a7 c- A/ W0 X$ p0 aC = cov(A,B) 返回两个随机变量A和B之间协方差。8 _$ y% k* D0 l7 F: F

# D2 h- d; O5 K% C( s
  • If A and B are vectors of observations with equal length, cov(A,B) is the 2-by-2 covariance matrix.
    6 g; ^% e8 v1 Z+ c0 f& _: _- j2 ]8 \
, t) s( k3 B8 z3 |% B5 c
  • 如果A和B是同等长度的观测向量,那么C是一个2*2的协方差矩阵。8 N7 h$ C# E6 c2 L- Y2 t# T$ v
4 K; V( J) T% _4 [- ^. x4 z3 t
  • 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.
    2 R* W& @) m- {9 x- {; U; B5 U
. W" \, P- V, q( i* E3 }0 V5 B
  • 如果A和B是观察矩阵,则cov(A,B)将A和B视为向量,并且等同于cov(A(,B(:))。 A和B必须具有相同的大小。
    $ N  I5 |- L8 ]/ }
) ]/ }$ a- W, |% l8 |
  • 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.7 k4 i" ?/ u  y$ a, u
. G- y) U8 z% D/ w5 B4 [0 P
  • 如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。) ?6 N# B4 N8 L1 z6 b
$ y1 q6 Y5 g7 D9 N, E
4 L( ~& g: O( {+ ^8 w4 _) G

8 E3 W; d$ G2 ~# S/ wC = cov(___,w)
; [4 o5 l+ _$ p1 B; W7 u: ]
* `' _, y* y# I
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.4 T1 N2 p1 L8 n; e1 a) P3 u

1 t2 ^8 x  {  y9 i1 J$ h6 v7 \C = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。
* M3 J$ L! f1 a
; v' `+ W# d1 f, q7 ~, h- c$ K
: H/ ]) f8 e3 a, c( W. SC = cov(___,nanflag)
; Y& S: Q; b9 B3 ], ^3 [

$ @' P; Q- D8 l1 d! b7 A* CC = 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.: a+ F/ [2 }4 q+ k* f
0 [  y5 Z" @3 N  I
C = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。/ E2 S  s) P* o
- }6 I% N. _/ P. ~; D6 K
" |3 N) [+ b8 O5 s+ v: b4 o# H
示例
1 D2 n4 T( y( Q5 ]6 B

  e8 ^  v/ s' E) @下面举例说明重要的语法格式:
. H/ U: ^6 ]# A% L4 w' b3 S. `; x3 C% i( j) M8 i" ^1 o
C = cov(A) 举例(矩阵的协方差)

* M3 T$ Z7 Q6 P2 J# e" |& [+ Q2 N8 w. d' c6 j8 s
Create a 3-by-4 matrix and compute its covariance. w$ h. K9 A6 f7 x- Q3 z3 a
. r4 C/ e* e! J
  • A = [5 0 3 7; 1 -5 7 3; 4 9 8 10];
  • C = cov(A)
    % ?8 [: \- C2 F* P: V
5 d9 D9 q3 f. b4 w* A

7 P6 t) T! H% p  s: |% a# a/ G1 L

, q* [0 M) h9 W$ j) H" G7 v! F) D  u6 k: D) D
  • C = 4×4

  • % `7 Y8 _& J, u$ L$ x
  •     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

  • & p8 v) w6 i" Q1 T# ~3 f& x

    - o' l9 _! A; U) S9 N# c
  
2 {& [* f7 ]" `9 {7 d+ M4 U

7 N/ i' g( ^  j4 Z: s$ B! z# K4 [4 j& f  ?8 U6 q4 U
Since the number of columns of A is 4, the result is a 4-by-4 matrix.
4 _" D& q4 n8 u( ]5 s$ A. p2 _8 c6 @" m: g: Z
由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。1 }% G/ \& p4 A
5 Z; {2 d# R. i5 _( B7 A

4 E$ F1 L& ?% Z/ G& V/ X7 i' |9 Dcov(A,B) 举例之两个向量之间的协方差
- J. k7 [) e" b5 q0 o! [

1 R& H# @9 z+ L8 z9 F# p1. Create two vectors and compute their 2-by-2 covariance matrix.0 N3 x* ?  |" A- R
% E6 b3 W& Q+ w" t, y3 k, e
  • A = [3 6 4];
  • B = [7 12 -9];
  • cov(A,B)4 t" @4 x( l+ q, G" j3 x

; F  v- @7 k& ~3 ~0 G* Q
1 g# R8 e! {  \' X
: |& I2 q) N, b4 a) A) m1 T

$ d" W$ U% G. L1 f/ b! q+ r
  • ans = 2×2

  • 6 n- T9 g4 @' e+ M
  •     2.3333    6.8333
  •     6.8333  120.3333
    ) I% c5 H$ M9 s5 ?% Q" Z0 q9 t
2 o( s! G" v. N% O
+ z; j# W1 ]1 C; r. ?
& A7 }' V, f* i* z+ z0 [5 @

9 w, c( W# [  r8 R* R" r: f1 kcov(A,B) 举例之两个矩阵之间的协方差

7 ~, m1 T5 K( q, p" f
! v3 j* A7 r, |2. Create two matrices of the same size and compute their 2-by-2 covariance.
! K9 [3 F: E  ^6 n" E1 T0 m1 ^3 V3 p% P/ {, a; @* M/ h
  • A = [2 0 -9; 3 4 1];
  • B = [5 2 6; -4 4 9];
  • cov(A,B)
      u+ I2 u- a8 G% H. _7 ~- w
( U0 \% ?# n9 j! t5 X: F6 ~7 ]
: |2 t5 @, @$ y$ r

- X& H% g. T+ A) F- g5 t+ ?1 H: P' a1 v% k+ [
  • ans = 2×2
  • 9 T1 }% b* J6 Y, k
  •    22.1667   -6.9333
  •    -6.9333   19.4667
    # s9 d% p' B" G' R7 x, ~( _

% P4 r" j5 i% t" M7 j# ]( j1 x6 f& }( g4 @/ y

/ P1 P% L0 z3 a. W' p( M" Z$ F4 o, h
这相当于求A(:)和B(:)的协方差,如下验证下:
) f2 H' E# `( Z# U
+ y  C: n' k  y
1 |7 Y8 v, a0 d8 a  Z3 t$ l9 ?% A# T
0 z9 U+ [1 F/ a0 r. ?
5 o# \& S9 T/ t) D1 k0 q% q
& o+ |9 O: S3 [& R

# T. v+ P. d: X
% S; ~( y' o9 r3 `9 X% o2 x$ i; r对比下cov(A,B)发现是一致的:* m" W% U6 [$ b, F( U$ C; \9 E
9 S+ |9 @8 O- V# J% `& s1 r( H

9 K( P  z/ G" E) ]8 S* r3 o% R+ w  E2 M. I# V5 X  u/ m
, B- n  Y, I+ c! P
Specify Normalization Weight
: d! Y& m& S5 w5 n. r6 u0 s+ \

" e  ^6 H8 w3 X- A+ o创建一个矩阵并计算由行数归一化的协方差。
' l. l, j. W& j$ {' O7 n9 Y0 h2 V" H& f" P* T! o' O
  • A = [1 3 -7; 3 9 2; -5 4 6];
  • C = cov(A,1)
    , z5 g$ w! A9 D

+ c$ H- ?7 R) a
* U: I8 u  K& M) h) W9 b: P3 ^
  • C = 3×3
  • 1 A0 ?: k8 v: I* h! i; ]0 f
  •    11.5556    5.1111  -10.2222
  •     5.1111    6.8889    5.2222
  •   -10.2222    5.2222   29.5556
    7 g7 A. H2 q* a! P+ n; X$ ~/ c
7 Y0 B; N1 k& [) s
7 j4 S3 N( ~+ M6 Y
+ @6 t+ l$ a. D8 B/ A2 O
/ o5 q, d2 L; @3 _
我觉得还是有必要比较下不归一化的情况:. [1 ]5 p& i1 G/ a7 k

" n, e1 j5 b4 R7 R( u7 }* N, p>> A = [1 3 -7; 3 9 2; -5 4 6]
8 b1 O( d0 Y3 e& G
, w" C. {/ s5 C9 z, I6 l, BA =6 [9 }) `! ?+ P7 n; ~

# G$ n; Z7 f9 Y6 e0 Y2 x0 ?     1     3    -7
1 n5 T4 y1 m& s     3     9     2
; n0 y" S: k3 U3 Q' Z6 h  T% w    -5     4     6% K- u: o8 n* G
! k5 p6 m6 j( Y& \0 @! v2 S
>> C = cov(A,1)
, e4 Q- L* u# |' L6 r
* E, q: v+ C. j" iC =
" N% Q0 W0 Z  q6 `/ ~, }( w+ _& c! ~
   11.5556    5.1111  -10.2222
6 }, @! e6 M) S5 Q  G    5.1111    6.8889    5.2222
3 S: Q" b" p5 c* B3 Z" z' e- j! z  -10.2222    5.2222   29.5556  ?. s; F- e5 C. _
7 |' N; s6 \0 h0 T1 ~3 J( ~$ ?% c
>> C = cov(A)
# u- X: z4 L0 r8 ^) j4 f
- ?2 a9 S2 s! LC =
3 m& O2 W$ D; Z* ^6 w/ t. t8 W% U1 |$ [) o. [' C
   17.3333    7.6667  -15.3333
2 R1 p' P  @/ m    7.6667   10.3333    7.8333
; G- x7 P6 R- z$ J/ {! w% ?( }. z  -15.3333    7.8333   44.3333
- @9 r$ A  x# t' W% e( a* p/ C$ O( W
4 {& h; o3 R) ^' V, F
Covariance Excluding NaN

/ Z% F  t6 X4 [; p
* T6 }1 D/ o+ }. J" q" \创建矩阵并计算其协方差,排除包含NaN值的任何行。+ t6 R. y% M$ X4 n( ?
& I7 b% T* J5 [' X1 A" y+ U' i
A = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]
& a$ X# @. d$ Z
0 h+ g  E- A$ A5 D
  • A = 3×3

  •   W+ T% y7 f; {2 R/ b. @) ~
  •     1.7700   -0.0050    3.9800
  •        NaN   -2.9500       NaN
  •     2.5400    0.1900    1.0100
  • ( d) I: w+ F2 K) o, ~2 S4 ^: {

    - @; ^& E! S( o1 J0 i. e5 W8 s& T
  - C- G9 t/ N! D

! ~. U  q; \" C* j4 L* `- N' ~6 l9 CC = cov(A,'omitrows')
$ Q1 w% b1 s0 L; P( Y8 M2 |

1 k4 K! s2 ~& ^
  • C = 3×3
  • - j* D, ]0 z2 A5 w
  •     0.2964    0.0751   -1.1435
  •     0.0751    0.0190   -0.2896
  •    -1.1435   -0.2896    4.4104
  • 9 |0 c6 ]  h: s8 i/ f0 j9 ^0 v

    . E0 V1 ?; ?2 K0 n" [
- v: k/ Q+ ]" `5 c5 h

! a9 _: V) F0 p
" u1 d' c6 f1 }4 K' m2 u

+ C0 E- N3 A& \' W7 R
7 z3 W& {+ O# ^9 z8 \9 i* P4 G# I

$ o; I% O2 ]5 q1 O% u, D
' ]: c" j" f3 ]* v: F' N
+ E1 l6 R* Z# a0 P

, _( x" f: A# x0 X; [- J+ K& y" e" G$ A& L3 l& }
8 v# O' t% K" o5 C2 o1 K; O6 `
0 `8 q+ b1 |4 B1 ?( @& ~6 U

1 `  l& e! l- j5 X: \
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-11 12:42 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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