|  | 
 
| 
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  % 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中的 cov8 ]: }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
 6 v$ M/ x1 t3 s如果A是一个观测向量,那么C是一个标量值的方差。( J% Y) M7 T6 P, N
 
 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
 ! \* e( U& I1 P% n2 vC 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 ~
 
 C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。; v2 K/ `% G, B/ `! G
 , V: s7 B, R3 P
 1 ~: z8 g. a1 v" `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
 
 如果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
 $ t8 u! i8 o) i2 J, \6 ^% W- r: GIf 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
 
 如果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
 ]$ W* ~$ z+ d0 J( J' @7 A/ tIf 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
 
 ' z( U  D& j+ `% u4 E- X如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。) |  ?/ ?- G: L' p+ T  t/ r
 
 % 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
 % u& k7 n  ?* s( }/ C) xC = 4×44 ^/ 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.33339 Y8 |1 R# M' ]/ {. C
 + a9 M& p/ b$ L: B& B
 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
 
 / `& ^% K+ l/ A, T; }3 b9 YA = [2 0 -9; 3 4 1];B = [5 2 6; -4 4 9];cov(A,B)  g* n3 l( d1 K+ U2 a
 6 P. {9 O& A1 w/ p; `
 
 8 O$ K, Z4 N# {! R; C* c% B0 `
 * H7 W2 _! v6 x- r
 ans = 2×28 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' K2 `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 Weight8 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
 4 y' I, y" \( SC = 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, @
 
 # 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 U7 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.41042 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
 | 
 |