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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
- V% _5 i0 z6 }# ?. Y7 [: M9 h
Covariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。
8 C5 J% D* Q4 B( t! a7 D8 T$ d, @5 K# t. D# }* C
本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。
, k' o, S3 G7 L& a
# D  @3 F) r" n. v+ L, F4 R; c, X2 t1 ^废话就说到这里,下面正式开始介绍。- S. |5 o! p# {7 r
; G1 {! x: s0 s6 P) t5 t% ~4 N: C
目录
/ ]9 l1 g0 t( P% k6 c& T" q3 C# u# J8 S, X# z( g! C7 t5 Z  B' ~7 D
基础知识4 ^6 j9 `8 A$ s  c' _1 b' q
& ~: b+ \: o( F$ r- y
协方差(Covariance):! M: |# l* n" s8 y
$ p7 l) P& ?8 C1 k! W4 j  }
协方差矩阵( covariance matrix):
) U4 r; d+ K' X: \6 E8 b6 ~+ \' G2 R+ i1 g6 B' s3 t
矩阵的协方差:. o( H: w& ]3 B" J% V
0 }1 X# _# a/ J2 j9 D6 @2 A
方差:(这是赠送的)
. V- S9 e6 X1 v, p8 m  e% O- E: [/ T5 s% d2 `  q
MATLAB中的 cov
0 o# Q  `; e/ _0 q  X' S& t8 K$ ^; p
语法格式:
5 H  ^. R1 L+ k2 h' n0 t: b1 ?) R& j) W$ K
C = cov(A)
* a" A! h+ O; _4 T7 r! S2 t+ {3 o8 m: H% ?
C = cov(A,B)
# T3 O# x% I. b2 f) L
2 t% M: q; ]* O/ n8 k7 X4 \5 SC = cov(___,w)
' b! N) ^8 s- Y! b7 N' g& p" F+ V  o
  y) e0 k2 m1 d$ Y& m: @+ GC = cov(___,nanflag)
3 S" A+ F# @, V! p" J$ S+ A4 [& f) L
示例
( h. F9 N: S7 Q: b6 T) S& ^3 G' d0 f; \  i4 [5 t
C = cov(A) 举例(矩阵的协方差): K# S! U3 t# u' E4 e5 A
! M# w6 U- H5 }8 b3 P( Y( L
cov(A,B) 举例之两个向量之间的协方差6 |5 Q8 n8 z  H
9 u1 G9 v. Y5 T  D
cov(A,B) 举例之两个矩阵之间的协方差
, T& k8 h4 w9 M" E2 X4 `
4 u. n1 n/ n& y4 w& ZSpecify Normalization Weight
% ~0 f6 E" i; d- k+ R8 ^4 U  C0 r2 Q0 T6 N0 y5 X' V7 B+ o
Covariance Excluding NaN0 X1 t5 A% T1 @8 g

! J4 g5 p2 u/ K2 z" ^: \* P) w  X7 w$ e" h! q' q! C: J" Q

; O- O9 j4 z, ], Q( h" b6 {基础知识
, C$ T/ x5 T  Y9 @- N
协方差(Covariance):
# y' B2 [3 u( T4 ]3 J% D  n( Q. S
& ]2 D- Z1 ?% Z$ h4 T: Z. C! m9 @/ ^
对于两个随机变量向量A和B,那二者之间的协方差定义为:1 g) {* f1 t( ~7 s8 M( q2 F

3 ], G  a( U+ d6 W
, f: k# y7 m3 a4 R5 i- r
2 k$ I0 I6 m2 Q其中表示向量A的均值,表示向量B的均值。
$ C+ F2 M1 s6 z
$ Q! V& K" v) m' {( r) S协方差矩阵( covariance matrix):
0 ^9 P/ K; s. Y. ~" d
- _! y- C: y% c) M& R
两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,' e" v5 j( o) j2 F. D! |
. W! u$ t* U0 C# Z' t

+ R+ |; B- Q1 c" \* O+ z; B' h( K& k/ {
矩阵的协方差:

9 R' }3 V5 f' F$ [8 B  q3 o# e' m# o: H4 _# l3 [% m
对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法
/ L) S. E( S4 P" m7 K; J: q
0 X7 ?# F& B0 k6 k' e+ b3 E
, {/ ?9 f0 d( W6 e# Y8 I' t! n9 |# ]* f5 q6 h! f6 n
方差:(这是赠送的)
4 m% K- T7 h/ [+ C

" B5 N. Y  e2 ^6 o% k7 G, d. d. R# b对于由N个标量观测组成的随机变量向量A,方差定义为
" b: Z/ d* e- U0 {* Z) V- t$ N6 I) ~7 J" {$ P8 r& v2 {# L' j* g0 d* C* \

' }7 H0 |& q0 C9 H- h4 {$ i8 Y; {0 F: P  _0 u
其中u是A的均值:
# w$ L; j, }9 `- Y+ {4 o2 ]% z
0 ?0 H* A& q3 i7 S 3 E6 I5 K6 S) \+ t4 A) h  ~
: P( A6 }9 X5 c
一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.
2 ~' S. B- D3 D4 N) O- P5 @3 B( m! f6 v" C, p+ z8 d' s
(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)+ i2 ?3 e: `3 O
+ ^" a; l) z" ^) R0 D

0 g0 z* c4 f8 b: n5 s& K6 |  f' tMATLAB中的 cov

4 @2 Y4 m) D$ G; L3 e0 _$ G; k, N) v8 k
语法格式:# E7 K, c" e+ p( H
4 z5 T7 _% S5 C7 Z1 s

- @# ]/ w6 x, D7 k; J( K; b: x
! |) _2 d2 H! b4 a下面逐个讲解:# X  ?- f9 ^3 I' w  z# k* y! h
8 K; d- o3 `! E/ s' K6 Z+ b
C = cov(A)

# X, ^/ b5 ~, B' w. W+ R( d) v, c+ P" L- A8 N
C = cov(A) returns the covariance.( |9 @. t9 @% F# R7 l

$ c& M; `) \7 D: z2 iC = cov(A)返回协方差。4 z5 K) V- R" B; u! I/ L/ B
+ N; Y  _  q3 F* A, J9 C& S. }8 j
  • If A is a vector of observations, C is the scalar-valued variance.
    & g* W2 k. y- e, u# s

: I$ S4 e7 ^' p" r; ?0 w8 \
  • 如果A是一个观测向量,那么C是一个标量值的方差。9 W+ N( c: D4 ]
0 X3 j& f: Q0 b8 H# p6 y8 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.  b3 F' D% o% |. j

8 {* S  d( s5 U* f8 n5 A+ n
  • 如果A是矩阵,其列表示随机变量,其行表示观测值,则C是协方差矩阵,沿对角线具有相应的列方差。(协方差矩阵的协方差是列的协方差值)
    ( g" S9 G. A! P# J
: O' E* u0 {( k
  • C is normalized by the number of observations-1. If there is only one observation, it is normalized by 1.
    7 \& K5 Q9 s6 q4 S0 _# I

' n7 w# G8 q7 c0 k- }9 {5 E5 T, e
  • C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。, f" x) B$ I$ v7 u0 ?/ Y$ K

# i- r! z2 D4 O  b
  • If A is a scalar, cov(A) returns 0. If A is an empty array, cov(A)returns NaN.
    % N7 U2 I/ `5 K

5 x5 B8 v- o' m1 T1 I* V7 Y8 _* j
  • 如果A是标量,则cov(A)返回0.如果A是空数组,则cov(A)返回NaN。
    0 O9 _2 Q' m1 h
& {( A6 H8 \0 w0 G
(你看看人家考虑的多周全!)
, _0 c- g! d  T: @9 ]9 [0 d3 l! B$ Z) z4 u4 B4 a) o% L1 v. g

- j. a! a3 m  |' c2 Q8 aC = cov(A,B)
# O, M( s3 j3 O4 F! k
% U) h0 _- b9 X
C = cov(A,B) returns the covariance between two random variables A and B.2 v) K" H! @) s3 c9 W4 V
5 i# i  J: ?8 s2 j0 C' j8 |
C = cov(A,B) 返回两个随机变量A和B之间协方差。
5 N& }: K0 D, T6 Z3 a
. S) `7 @* I% g2 D4 ^1 M
  • If A and B are vectors of observations with equal length, cov(A,B) is the 2-by-2 covariance matrix.
    % Y: D. q4 x; g4 |  _& b
7 f0 k0 {5 }7 H: f  O, o, ?
  • 如果A和B是同等长度的观测向量,那么C是一个2*2的协方差矩阵。
    ! k; k2 M3 d8 L+ f. U) w
+ v+ b. ^% A8 ~9 `
  • 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.
    ) B) B! ]! t  c+ O

0 K. U. Z% h/ I& N, W) X
  • 如果A和B是观察矩阵,则cov(A,B)将A和B视为向量,并且等同于cov(A(,B(:))。 A和B必须具有相同的大小。
    , ]% F1 H  K; d& u" X  s" f/ u# `) W

8 \$ t' ]6 Y, 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.( [8 i0 \9 ?) |8 d! d6 x( Q9 ^
( t* \% N6 i) c% }4 Q1 e( y. D' b
  • 如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。3 O- Y( s% k6 l: N9 ]8 G* ?

' u, v2 q. X2 h" ]% }4 _
- c# w- m, x, v4 x* p* D% E3 P

$ Z' G4 S; d6 G; YC = cov(___,w)
" I3 H' v+ Z! i/ C& }
2 f+ f3 K2 w; e! O% {! X5 `5 }
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.
' O3 s$ X* r% t/ ~) ?; a( `* [; \
* _2 f. h. Q5 `% @0 CC = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。
* D$ O" S6 _  f' z4 U
2 l: h: W1 J/ o0 a' y# g! A, t( `3 J! P" |4 Q: }
C = cov(___,nanflag)

0 j+ g' {" u  Q1 [" b, }) A: {" o7 S2 l
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.) m, O% B5 a4 y3 ^# j: h
# y" I) X4 S/ G6 O) z. X
C = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。
* L9 p5 f/ {0 T5 D
( v4 A" K" |9 o8 N& c" [
0 u3 |1 _- Q' Q. p4 n4 f7 \示例
0 ?9 A) ~  y/ w% u

4 h9 R" c  g/ V* {1 M下面举例说明重要的语法格式:/ M( }* G0 r! G  V7 K7 I

5 e; r6 i' K; {1 o7 \  C2 G1 QC = cov(A) 举例(矩阵的协方差)
, A8 G' _( N* T

. z9 a3 K: Q' u' J; _  HCreate a 3-by-4 matrix and compute its covariance; {. O% f9 e9 k' ?5 ]# C4 I$ \/ i

+ M1 N' N: X  C4 U4 d# X0 }
  • A = [5 0 3 7; 1 -5 7 3; 4 9 8 10];
  • C = cov(A)
    3 f8 c; u. a# L% _  R0 [
& v" R( f9 n+ o7 a$ D, R# \9 G
6 Z8 J2 N0 L. l; {! M1 n
# a/ B/ m2 x  d, a3 w
  i1 y2 s4 s5 O2 D  j+ x$ V
  • C = 4×4
  • . o3 e* }: n/ j% U, P$ E! b
  •     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
  • 8 ]3 w$ s8 u  O

    1 B7 Z  ~$ l( Z7 @! N
  
) i2 U" g3 \: ]8 m0 |* W

# G( `' @7 {) G0 E; K4 @
" ?8 q3 N% u: _2 A' g; q- nSince the number of columns of A is 4, the result is a 4-by-4 matrix.
; ^( [3 z" K& g" Q: N' c" C8 C6 @
0 Z' @5 X( S% M# t由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。8 J+ a& `' Q6 T* s  d+ `! ~
; [/ G. z& z9 K3 d$ T; p' m6 J. x

. r. w7 S  A  ?$ zcov(A,B) 举例之两个向量之间的协方差
5 }2 W; x! ]& b4 S8 |

8 U4 b2 k9 A6 i3 l7 u1. Create two vectors and compute their 2-by-2 covariance matrix.
. R: |  G% {- h) E- T0 U) o) E( Z/ [+ Q2 A& J
  • A = [3 6 4];
  • B = [7 12 -9];
  • cov(A,B)
    2 E% `6 p$ d1 I: W1 X# Y

( y2 O; w- f3 `  Y8 D" P2 Z) E8 h5 Q$ R( V* {
  e, r* [% d1 S2 z+ i5 \2 K

% ]1 }2 L+ Q/ \9 ^1 d' s' g
  • ans = 2×2

  • ! t  r7 o7 j2 R, M* o7 X
  •     2.3333    6.8333
  •     6.8333  120.3333: a9 n7 {/ \6 R
/ R* `* B% F7 O  h; h$ `
8 \. [7 J3 k4 `; F+ W5 _
* E. q6 i# f1 o3 y% c
$ P$ {- Z7 {. V6 @2 T
cov(A,B) 举例之两个矩阵之间的协方差
  y, H$ d- ~7 v9 @8 j
- `- |0 F9 Z+ g1 b6 P9 C
2. Create two matrices of the same size and compute their 2-by-2 covariance.
, H& m0 z! T; V; u7 f4 K6 r& j5 r8 t
  • A = [2 0 -9; 3 4 1];
  • B = [5 2 6; -4 4 9];
  • cov(A,B)
    , w' x$ f. ^4 A8 L9 M" Q
3 A8 ?9 C( C, C. V1 t

6 @- A, j" N0 f- Q  _
/ q4 c. y3 ~; U2 _7 V
" u; S4 \& V; r
  • ans = 2×2

  • 1 ?: U" Y$ f, ~# l% s* u
  •    22.1667   -6.9333
  •    -6.9333   19.4667
    5 t5 p$ D) }: X! K  @

# R. o! R% g, v" H6 |
; M& C/ J2 T. ^% D3 Z1 Q

2 O: X: O8 `+ `% m1 s# C- B0 r7 v; n0 ?0 F' X6 i
这相当于求A(:)和B(:)的协方差,如下验证下:
) ]8 S# k9 F- D# k; B
6 `% a1 f1 C, U. q& {: F
  w7 \, k1 o. \9 c0 F& [

( n' O  [$ g' G / z- X4 s- c! l$ [" }9 l" S& l0 T) u: z

$ H. U% O4 c* d6 h: f
; M6 Y* w) n* \
; [" Q5 j; S, |: {/ c  _对比下cov(A,B)发现是一致的:+ L: R4 b: Y) d5 P
* ~$ J( N3 P" E; O5 W: K& k0 n! a, ?

# K9 S& r: T6 M  \! s4 `. o. X1 ~2 s$ q  w/ t
0 V1 u# M1 W, X- Z3 [9 c1 q: N
Specify Normalization Weight

( ~; a  ]1 `. C7 O- |( T
; J5 k+ I) j4 J6 ?: K创建一个矩阵并计算由行数归一化的协方差。. f' D4 Z) J% ~  h

$ t8 a. _0 v! T7 v2 o: J
  • A = [1 3 -7; 3 9 2; -5 4 6];
  • C = cov(A,1)0 q$ a; n5 }2 u$ o9 E) u! J
# m* B# s0 z$ p$ P+ a

+ f1 Q( P, i( n" J
  • C = 3×3
  • 4 s% e- `$ w* k% H, q
  •    11.5556    5.1111  -10.2222
  •     5.1111    6.8889    5.2222
  •   -10.2222    5.2222   29.5556, r+ {3 N$ S4 b/ }3 G

& @. t* c7 t* A/ k  J* ^5 {! k* {$ Q8 _. Y4 w/ m* w! z

8 ^+ c4 v- `* b9 W6 G6 I. g, L* o' Q: q8 |: @0 l3 z9 h( @
我觉得还是有必要比较下不归一化的情况:$ n8 x1 _6 P+ v, h3 V
. a( b8 J/ v* A: M
>> A = [1 3 -7; 3 9 2; -5 4 6]" L& x8 ~5 E7 c% x& m+ u% A

9 w0 C9 t8 z# D' I$ n9 W2 sA =" ~/ K, `  [) v0 b& R
9 o. Y9 V; Y- c' ^, i
     1     3    -7
5 G5 R( I# g. _2 ^     3     9     2' t  K3 e+ F/ P  R- b' J
    -5     4     67 a& P: _7 L5 ?6 p! \
. s5 G( G3 g/ ~5 h2 R
>> C = cov(A,1)
/ E( h) {0 m; E" q2 B
  t- s' l! F/ C+ n# Z5 B4 PC =
# _% m7 ~, s. \4 m! m0 J: o+ W5 v7 [1 `; |& o2 d
   11.5556    5.1111  -10.2222
) y; j! _* U: W1 V; I* z1 M    5.1111    6.8889    5.2222# z2 I2 Y/ S0 T1 x1 `
  -10.2222    5.2222   29.5556
" d" g; T; ^5 l4 T: |6 z6 Z/ }4 @. X/ E$ C! Y0 l
>> C = cov(A)
7 Z8 y3 H+ _& T$ k6 ~7 c! x
2 K# D0 B) {( e) c) ?/ V: JC =) w! f2 {8 Q; ^/ v1 H

# r2 d5 U3 K$ Z% w, A   17.3333    7.6667  -15.3333
* H8 L; L% o( _, w    7.6667   10.3333    7.83331 M7 w! J; `) Z. q0 c9 J# I
  -15.3333    7.8333   44.3333: n8 D* S2 ?7 Q$ T3 `% Z, i3 t
3 P. C* n: S" z

8 m6 D, |8 Z: HCovariance Excluding NaN

- c2 n# y" p) @6 ]- b+ i# A8 U1 D% X& P. U
创建矩阵并计算其协方差,排除包含NaN值的任何行。5 P3 ~0 w$ `4 T- a: ~- o

. M' ^4 P. p2 P  @" UA = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]
; X/ _! h4 q" b* H% u
  I' M8 g! d" m! S
  • A = 3×3

  • ' N9 L, N% O) }% W/ V5 W
  •     1.7700   -0.0050    3.9800
  •        NaN   -2.9500       NaN
  •     2.5400    0.1900    1.0100

  • ' R  N( O/ g2 m6 ^: ^
    8 r! d1 H, E8 r3 b6 Q
  ) a" q1 v8 B  w: d( f; \
* O' v3 z, h" L4 I+ z5 w3 t2 a
C = cov(A,'omitrows')
4 L- n- C* X  G* H) k9 r9 k

1 o2 J6 W) W! S: n, o9 N
  • C = 3×3

  • ) E6 Y! M" W2 r
  •     0.2964    0.0751   -1.1435
  •     0.0751    0.0190   -0.2896
  •    -1.1435   -0.2896    4.4104

  • 8 Z; ]  b3 y. O

    ; L  Q3 D7 i1 C, u3 F- T/ }

6 W; r7 b! e' Y/ |2 k- k& \. E0 t3 U+ G. v) J* C
5 |7 p& f: o# P, h+ {

7 ~5 r+ c0 `3 o7 Q, i2 u
8 u* n6 c3 l0 C% I  l' o& P% c
( B$ d6 f, i$ w! |. z2 n* h

% j/ L  l7 x, ~& d4 R: _! D7 W5 D1 U" v/ ^" i+ d, T. [  P
2 d+ s$ S+ X8 Y" g2 t
8 h4 s( q5 B4 q! l/ n0 i; _) g& P

2 X% N6 W1 j& F( `
& R) B. Z% A! Z& Z+ d% ]& O

: C! ?+ r0 b# Y, R8 Q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-19 05:28 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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