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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

% E  @+ i2 S) PCovariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。
! ^. _7 T6 Y1 Z! ^. \# O* S. H, A) n$ V( G7 Y0 H4 C* w& F& A" t
本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。4 U, t; ~, ]% h$ e! F
0 J- b! s2 T2 E0 i8 L
废话就说到这里,下面正式开始介绍。& u% J0 h) a$ T# D4 g) V: ?

8 K5 I. M8 z* j; n6 N0 H! S目录
) V* P/ z* D: D5 O. S( J$ ^7 R0 x# x$ g5 z- ~8 q+ U
基础知识) j( e7 ~3 ]* j% G
7 @# V7 e+ h( V% z3 L- u5 s
协方差(Covariance):9 J6 f! ~; g* r3 n* l

  q0 ?# P/ a% J! M- _8 {3 i" B+ k协方差矩阵( covariance matrix):
* u* p8 e' z1 Q6 L2 O5 a& h" C" ?* ]! O# \3 {) e2 f  M4 Y$ I7 N
矩阵的协方差:8 e2 n$ q7 l% V& k4 B0 i) m
% J! y8 e  P3 r' P1 r: L
方差:(这是赠送的)$ @  i( K, k! ]& \5 p$ C

/ r) l" b# v5 kMATLAB中的 cov9 U$ m- u- ?4 D( G

2 ^- I9 I* p8 C  {! N语法格式:( Y  A2 D  e, Z& B$ ~

7 ~. E+ w- L6 T! G% w& o& t6 mC = cov(A)
8 w& t+ k6 o1 H6 _; R- F- }, B
& V; {' @3 |  z8 h5 M' eC = cov(A,B)
* v+ y4 E" ]) N5 x6 R7 Q, Y" \1 n. N. v+ ]" p- Z6 ]8 ]* Y
C = cov(___,w)
9 F5 S" B; k+ p# I1 B8 s6 u; O  C: D% C; K* B1 }9 C; p& H
C = cov(___,nanflag)
$ v) I  A9 ?: u3 [) V- A
; K3 y8 e7 r% I1 O& M( o$ [$ ~示例  j; \( P. T6 E) d% Y* Q% l5 @

6 r9 W' M' |& i6 I6 l* v% XC = cov(A) 举例(矩阵的协方差)# e: S9 C0 d$ y4 ?4 r4 U

5 b4 P9 w  C3 C$ @: b6 j2 s# Q) u, Qcov(A,B) 举例之两个向量之间的协方差
. q3 b1 S" a, G3 S& `2 n5 d1 D* C+ A& t+ Y) e1 [  K
cov(A,B) 举例之两个矩阵之间的协方差
5 o0 i! e1 R. K& t) y  B9 ^% R9 m- l" O& H
Specify Normalization Weight
0 `9 i; h# X& A# Y1 T# {4 F( [
7 V8 p: I; X* nCovariance Excluding NaN( x6 L" W! t9 t( f. K2 m( y

  w7 u8 I  \% v+ K4 K
3 ^$ _8 k; k" S, |" U; W$ v  ?6 [  q- P! t
基础知识
4 Q$ z! s2 |8 g, o/ S
协方差(Covariance):

' s8 Y: f9 Y1 c$ S& _! \% n+ j
. T. i' h% L7 H- w/ Z& P0 u对于两个随机变量向量A和B,那二者之间的协方差定义为:$ c: z( t: C- }3 U1 _& `/ X- F4 W: J
9 S  z& h/ c) r. E) w! R( A* i6 T

5 Z/ [$ d& F4 ?  a) P6 X; U& p  I9 u1 t& W* m1 \, ^
其中表示向量A的均值,表示向量B的均值。
/ c3 U& |) C7 M* f3 ^
$ A6 A/ W$ \1 {4 K  k协方差矩阵( covariance matrix):
* s# {) ^6 t- [' T( c7 g9 j
8 k& j+ a# W* N) N. S' D, c
两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,: r+ K9 R3 o  f; r/ `% j7 j
; v' p1 H+ o; R1 b

# {& ~) J' p1 B# e9 @
3 V  M- {3 e' ]7 y- q矩阵的协方差:
+ z! ]4 w; H; i/ J
6 T( d; f  G3 _- B9 y! L) @
对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法3 F" I9 @9 k0 J+ u) ]; |' ~3 I
; P5 c4 Y  n8 f! W: O8 M: w% O

/ C0 {- y5 ?4 w( u( f
* F" V* R# W6 T. y5 E" }5 \方差:(这是赠送的)

' w1 z3 P& j0 r! V; a% K$ s/ e
# r; \# b* l/ }! K对于由N个标量观测组成的随机变量向量A,方差定义为
+ r; w4 q# Q2 M4 l3 h5 i3 B: ]) q0 z
; X2 t: ]/ v; y$ d! X3 r - W# L7 p/ D2 j% p3 b0 G
3 s9 T  }. R; g9 _2 x
其中u是A的均值:
- o6 P  P: v. Z( F+ Q, R" C! @8 H9 [0 O3 o4 H. a1 e
/ q! t# x3 ^3 x: R
- L! w8 t9 @+ U: G" l
一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.  K" S5 A: ~# ]! {/ I

: l- v9 N# B- _4 d8 u& o(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)
6 Q' a' ^% B- e+ N" L& @9 D2 d, T+ J  k& P8 \
9 k" C( U) f" I* M
MATLAB中的 cov

, }: x1 O, d( h+ ^+ e/ o
9 d6 S2 R8 r1 I& v# P6 t" A语法格式:
) a& i  f6 P# q, I5 c
5 v4 f4 u2 e" S5 |- s
2 y+ _1 f' Q' z+ Q. f
5 D- f- F+ G  c下面逐个讲解:6 a  D* W3 I$ n3 e. G5 H& V2 D

: m1 p  q* c$ w: rC = cov(A)

7 g  E- a5 q6 c6 W6 g. ^  H/ A- v1 r" x2 N2 P5 |1 K. @* L
C = cov(A) returns the covariance./ U  T  N3 r' m5 f/ u+ a
5 z/ {0 O/ M4 C& }& d. P
C = cov(A)返回协方差。
% V; |* q& l* M2 B# |  S% b  I9 m* M% u! ^; v
  • If A is a vector of observations, C is the scalar-valued variance.
    9 h5 V9 ?- C) t5 Z& V

& U# Z, Z: k* x7 S& ^
  • 如果A是一个观测向量,那么C是一个标量值的方差。7 R. w- g) R% E3 s/ U% n
/ {" n( }6 |+ N  r& I9 E" W  S1 J" {% \
  • 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.
    . w" i1 k5 ?  N6 |6 @
+ l( k7 m# y+ _$ |
  • 如果A是矩阵,其列表示随机变量,其行表示观测值,则C是协方差矩阵,沿对角线具有相应的列方差。(协方差矩阵的协方差是列的协方差值)! o) Y8 @6 V1 n' c/ D. L: G3 a

( }# T$ E, X* D- H
  • C is normalized by the number of observations-1. If there is only one observation, it is normalized by 1.8 R. \, E  G# z+ T3 K
( w' q- p/ `" w7 J: H3 e+ F. Z
  • C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。
    " ~4 c0 v0 I; f

: \% D2 O$ Z. s- B4 B/ `1 F
  • If A is a scalar, cov(A) returns 0. If A is an empty array, cov(A)returns NaN.
    ( c6 ~$ u6 M# }

. |$ P4 R! v  |- c( s: v, P4 n
  • 如果A是标量,则cov(A)返回0.如果A是空数组,则cov(A)返回NaN。0 r& |1 r  z" |2 n8 s
- m) j  Y6 A1 H3 N( l! J( _
(你看看人家考虑的多周全!)  I" [9 [1 Z; N5 G, g

# Z0 {5 g' d/ Z" t: E! K$ K; v8 E, |! u3 W+ K$ y0 W8 J
C = cov(A,B)

1 e& j' H$ G, ~* W: D+ H. J2 ^) I, B' h% w! R
C = cov(A,B) returns the covariance between two random variables A and B.( I2 w4 o7 T( ]+ f9 b( d7 _

5 x* `. Y; [5 v/ \9 bC = cov(A,B) 返回两个随机变量A和B之间协方差。
6 o' m% i+ r" r+ r/ F  h
# z. Z: y) f  G$ y+ l
  • If A and B are vectors of observations with equal length, cov(A,B) is the 2-by-2 covariance matrix./ \, w3 H4 j( e7 j- m
; p  E8 S6 A  q% b7 ?
  • 如果A和B是同等长度的观测向量,那么C是一个2*2的协方差矩阵。
    9 ~4 F, j4 E+ y$ O6 w, z( e3 n9 j' H

- d/ d  |0 b7 l- i# g, G
  • 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.
    4 r) i0 S& R! i
6 Q  |& U+ D7 P. B3 g
  • 如果A和B是观察矩阵,则cov(A,B)将A和B视为向量,并且等同于cov(A(,B(:))。 A和B必须具有相同的大小。2 R4 k4 s+ u3 `$ `6 R8 U% n
  z6 B: r; m. T$ e% |5 q' U
  • 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.  ^( R* |; a( x6 U

  N8 M) X; _& q
  • 如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。# T: O( f* h5 a4 l

* {5 ~% A3 `% X+ i" p* p
: ?) h* Q  T: c+ q- H2 s
- q3 {, p6 i! p
C = cov(___,w)

* P1 h( y4 a) k7 A, C
% z, @6 P7 M+ }- _6 gC = 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.# j* R3 n8 q* E. N' {8 g, N
! z9 M1 I/ j  F5 _
C = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。
' Z" p& [+ `6 Y, N6 ?2 `8 V& ~9 D( ^

4 C1 a7 O0 s) m+ QC = cov(___,nanflag)

& p# {; F( U. G& d7 h; u
3 E- G) q6 ^2 t# V# ?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, P$ g0 g" J) ^5 l/ b

- |6 `3 S5 S' Z# ^5 }$ d6 A! ZC = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。
2 X& J, }2 L( N1 b% A
3 H; N, C$ u" X( x& |. D) H3 K8 k' f3 R6 S5 w6 n6 D
示例
' G2 p. r5 B! a" V

2 O0 v4 B' l& l' Y! ]下面举例说明重要的语法格式:) ]3 A, O) X  t/ N9 p
! I2 d/ K4 ^& ^6 [
C = cov(A) 举例(矩阵的协方差)
0 H2 {: \7 p' |. D' D, d

8 t1 f5 H6 _) X7 k1 N2 cCreate a 3-by-4 matrix and compute its covariance
  n' h- C' f7 ^  \* M& l
# x# \- f7 Z+ Y
  • A = [5 0 3 7; 1 -5 7 3; 4 9 8 10];
  • C = cov(A)+ r6 k# o! ^9 F+ ?9 @* b1 t
8 R: X3 a2 c7 ^" D) f4 V1 |% ~6 u

4 @5 u; y/ v( J+ h* R9 G, }9 D4 U. t
; V" ?& y5 w5 f  |4 n9 @, v. f$ s1 w, V
4 ?" c5 k" ?& n# G  h
  • C = 4×4

  • . `- `* J& m1 p6 F# K3 o
  •     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

  • ) _7 J+ b% L% f7 @/ Y+ i

    5 P% F1 v3 E0 i" V
  0 `4 p' k) R4 Q+ y2 c: F6 u

+ d1 Y2 ~' d# Q9 F0 w3 F4 R5 R1 V) |- B* v% N3 n& e, |' e
Since the number of columns of A is 4, the result is a 4-by-4 matrix.
% l8 e9 O! g2 R2 @/ A4 c  o# p& }7 k8 [' e( `. x$ j( i* ?
由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。
; H. n% V% T, P9 Z, g
3 f) H$ |5 I7 y4 U0 m# h# b. `: B& d6 b4 r1 o8 P: _3 o
cov(A,B) 举例之两个向量之间的协方差

. P: s; y3 {: A8 _: ^
' J; g. c9 _' e* a* t1. Create two vectors and compute their 2-by-2 covariance matrix.
1 Q0 Z  D( T% @, `* b
. F# L+ e/ k1 Z1 a
  • A = [3 6 4];
  • B = [7 12 -9];
  • cov(A,B)
    3 g/ t2 p+ S/ |: O' Y3 ?. g
5 I2 V9 z- J/ \7 J$ z
2 v+ X4 r8 w3 e5 I+ z1 F6 n
5 p/ r/ Z/ W2 G% A/ C% M( o

7 W; Y( c' o. Q: U
  • ans = 2×2
  • * Y/ _' B3 q- m& ^0 {
  •     2.3333    6.8333
  •     6.8333  120.33336 J; U7 x# Z7 i  K
6 b' T9 y; k. C8 [7 Z

  b4 p: K% L3 O! Z4 p5 g
) f4 B; t* L& N% N) A
" l4 P; B6 L1 u; e" W) }
cov(A,B) 举例之两个矩阵之间的协方差
( Q$ l- O7 P) k% r
, }) A. u. }3 ]' ]
2. Create two matrices of the same size and compute their 2-by-2 covariance.# f$ `2 A& I# S7 e

: Q) k4 E# C# c5 S0 D2 `
  • A = [2 0 -9; 3 4 1];
  • B = [5 2 6; -4 4 9];
  • cov(A,B)! m# H& E( b; `
5 k; m7 j! P! d3 A0 p! }

6 t: v8 H# B/ p7 N/ b

7 G, Q. {6 y% s6 k5 q3 Q
* ~: X% A4 m( X" A
  • ans = 2×2
  • 1 e! x: i! D& n( Q
  •    22.1667   -6.9333
  •    -6.9333   19.4667
    4 m: r( R& O3 a
/ m# `0 p% O9 d8 ]8 J1 {
/ M9 a" o8 i8 S( ?1 [0 Y* G
9 z, ]: @- ~* i; X

1 u. q1 D1 Q( e; \2 _这相当于求A(:)和B(:)的协方差,如下验证下:
, m. j, F0 r- j$ U( Y8 P: l
3 O: ^/ ]( r( J. D- }
' z6 p/ K9 b! t) q
* n/ {9 ^  z2 n5 d' y- m

" a1 T; L, \0 [/ s# i+ M: w% b, g- U: r$ k

( b/ |/ T; I1 M8 h  J8 r/ V
. e7 h0 j  J+ I; Q! p( M: F) h对比下cov(A,B)发现是一致的:8 x) @/ ^+ H6 o: p# H
1 [0 c  v: a+ x& s

7 J0 S2 R! u( @% D' R( |" E& s6 Y) k" N& t
6 Y2 G" q% ]2 l+ m; T& B5 Z
Specify Normalization Weight

9 x4 f; X4 w, F. B8 W# q+ {+ n0 m8 X) [0 o6 {9 V- ^
创建一个矩阵并计算由行数归一化的协方差。
& A# D5 I% M, o' [" w! z. O1 z6 f5 f$ A1 w  z
  • A = [1 3 -7; 3 9 2; -5 4 6];
  • C = cov(A,1)" r* M" c: X4 M3 X1 w

9 z8 e4 }& Q( r2 v
4 ]( ?1 d8 G$ l1 }! v
  • C = 3×3

  • " u8 L7 ^8 G4 v+ ~5 d; R7 w* R
  •    11.5556    5.1111  -10.2222
  •     5.1111    6.8889    5.2222
  •   -10.2222    5.2222   29.5556! ~% G3 o- F4 J% p

0 ~1 d  g0 S) V1 W  B% c& J" Z; p" A, p4 U7 L6 z! u$ J

8 [/ y9 ^- D1 X, f, q2 p& }
8 S9 e+ q; s$ S# x# K) {" ^# @- Q6 @, M我觉得还是有必要比较下不归一化的情况:
& {) u* N% Y9 _" |& o: F( C6 |& M! a
>> A = [1 3 -7; 3 9 2; -5 4 6]3 M* t2 _1 [7 X+ L
& r7 s7 f* F, _6 f! h3 \
A =
2 H& m  q% a8 C' }* L7 i; r! Y( n
     1     3    -7
' _6 z; d6 A: S9 v5 Z; k     3     9     2
$ s5 T( {) J# N$ ^" }* w% k; f) @" m    -5     4     6; w6 B- t- n; C" N0 b) |( ~
; w; N) p! }( ^7 e
>> C = cov(A,1)$ X. K7 i: b/ s1 U% A  \4 Q& l) D8 E
+ Z9 G8 a- S/ f& i# s
C =
3 m% ?; y( O/ L$ g) W% t
: N: o" J  Q# i  A0 b   11.5556    5.1111  -10.2222" X7 _0 q3 [* G. I9 _( R' h
    5.1111    6.8889    5.2222. c& K8 K: T+ N4 Q1 }/ t1 o; _8 J
  -10.2222    5.2222   29.5556. ?" P! ?) _+ L
4 S* t* `7 \, [" Q4 N
>> C = cov(A)
' m0 ~' U9 G' [  c9 g, u" z* ]
9 |: w$ o6 @) G' RC =1 y& |# m9 u, c" ^  ]

& \3 v* X. U& k" {6 s   17.3333    7.6667  -15.3333: s7 t  ], s( J5 Y9 r' w
    7.6667   10.3333    7.8333  H% u5 h1 K) a* G4 T( W2 b
  -15.3333    7.8333   44.3333
. w7 m/ h) b" W9 Y) D1 a* l0 J. E' Q1 ]9 W- I

& i+ ]- [6 q) K- H4 K! xCovariance Excluding NaN

$ A' u# I' c" l4 X7 u  C6 G
- r6 }4 E+ T0 f' G& f4 u$ Y创建矩阵并计算其协方差,排除包含NaN值的任何行。
( g% c$ D& b7 a+ C0 {  C, H' x3 O6 f5 {0 j( R4 I" g
A = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]
7 }4 ^2 @  j5 |& t& d

, i+ m( u9 N: i* m2 X. ~6 k
  • A = 3×3

  • ( E1 b# B% A' ?6 r' s; a( R# m
  •     1.7700   -0.0050    3.9800
  •        NaN   -2.9500       NaN
  •     2.5400    0.1900    1.0100

  • 2 d- }7 f0 c8 M4 E' @9 G
    - f5 y1 Q3 L  B& Z: r$ V& x
  4 t4 P3 e# W: o* k7 F

5 ]+ Q: R3 S5 U# ^: [1 yC = cov(A,'omitrows')

; l. j4 i9 b5 G" q$ P2 n% Q: |* ]) z6 y: Q+ B( O/ q
  • C = 3×3
  • , N1 h6 T" o. U9 j9 n* i- z3 C4 g
  •     0.2964    0.0751   -1.1435
  •     0.0751    0.0190   -0.2896
  •    -1.1435   -0.2896    4.4104
  • * [! d3 a2 d9 O' X  m
    / L7 V, d( O: {! Y
* M5 a# f$ M5 d1 L  ^9 h  X
6 h. ?" s5 R; m5 i1 Y

* p: v( W; H+ n6 p) Z2 s& R  e5 z8 p, {# \

- V$ q0 H& B6 y: ?! T% e5 [- ^  R# H% m) r2 H

, f" S$ T" t' \( [4 t0 A, T. Q, A& k* x4 F# q( y

* e3 ?8 G, A1 Y5 [/ t: L% J8 V( G/ j( [' w8 a5 X$ g

' n+ B$ a2 R' ^" H* g! }

0 r+ B. V$ |5 O: d2 `& X; v: _7 {6 O9 i" ~& q2 y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-19 14:23 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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