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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

; D+ d$ S3 h: p; l4 ?: Z1 CCovariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。
1 Q: ^- v9 Y8 ^) ~: K0 `& B4 @% |# i' ~, R$ I6 Y8 F* \( Z9 y
本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。0 w( h0 I( m7 G2 X

+ u7 T6 Y- U% X8 S3 R: q3 V% k9 u废话就说到这里,下面正式开始介绍。1 h7 J$ s+ }; T( u

5 w3 C) M7 M0 C( \! ^% x目录5 V8 P* g5 V1 `( e) M! r4 f
- E/ b0 B: j9 |# k4 L" M$ E7 y- C
基础知识
- K. o- n8 @( X. k& g6 d" u7 N/ I9 q/ ?* I, Y7 W' w
协方差(Covariance):8 R0 y/ W" F2 ]. N- k
5 c$ }0 P+ r& s7 M  A( {2 S3 p
协方差矩阵( covariance matrix):
0 e! Z! ^' b+ ]0 `
4 C. h% y' _& B; i矩阵的协方差:
6 ^. I- P4 H! i; a3 ~, t* q" ]7 b" s& B+ g* I4 E/ Q, h# ?
方差:(这是赠送的)' X- A* r. P. s

  k8 D% b& C0 s, P0 AMATLAB中的 cov) r7 I  W6 x( E3 R3 c9 F! o/ Y
: u0 G" [( b1 n
语法格式:2 @8 t$ @' L, H! l6 K7 f
$ T' p2 e! a6 m7 Y$ s- [! Z# F
C = cov(A)) e0 f2 ?6 S+ E6 b& q6 q& M
( d/ ]* l& d1 H; _# `" k0 a5 }
C = cov(A,B)
9 e; ^  h7 B. c8 ?; g, v6 x
* R/ K/ u4 ^( [C = cov(___,w), }8 A' K! P0 m# ]
! o! }0 O- k" D+ a
C = cov(___,nanflag)' J# k" V0 r6 |  _0 K  S& S" M! C

: p/ ^5 D  Z* |" X. Y7 J4 p示例" H  A- j2 C) Q0 O9 x! V4 s

# \+ A/ b: _3 E5 z- K2 Z. UC = cov(A) 举例(矩阵的协方差)
0 R) a- f5 v6 d/ R8 A% _8 D4 I+ v5 k, O& |! |  P4 M/ y
cov(A,B) 举例之两个向量之间的协方差
$ k: g3 `% r8 Q: P
- d, n4 W' }( U) Tcov(A,B) 举例之两个矩阵之间的协方差
6 d* Z- W* B3 b- b' s  S# m/ K) G6 v! }+ d6 F7 d; @1 m5 c
Specify Normalization Weight) K; z! g1 _$ c8 @$ K/ Z( x
9 v( Q5 ]$ c5 s, J  r8 Z/ p
Covariance Excluding NaN
" B% ^3 [# J9 Q" d) m9 @
. f# ~1 x2 L4 v/ ?* F. W4 l* Y7 u. V% v( h' E/ `- P% l! C
# j, h& `9 n) I+ d) f4 A
基础知识
1 N! q( B$ T+ `+ x. K1 L  J: V0 ?  q  r
协方差(Covariance):
9 B2 ^% v  x+ L- ?- ~
+ {" c2 A. L: N# N9 Y# s
对于两个随机变量向量A和B,那二者之间的协方差定义为:: a8 X$ p% q3 K" Q- n; y7 l
! N1 q2 M/ u# Y6 i' _! J. M

- O' K, U4 w- `5 v# m& E' ]9 M/ k# R
其中表示向量A的均值,表示向量B的均值。+ Y6 K/ p7 |- n2 i  J: m. |. v

1 |) ^$ ~' P% s/ u; R4 z协方差矩阵( covariance matrix):
  W/ U+ D" i* J; M1 X( f
9 Y) b% N7 W6 D* x) X! ?6 x1 b
两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,  a) j3 ]! S1 K# U* S

9 d" a0 y. r* ^" @7 A4 U) A; ^
. O5 q: ~9 L5 f0 r, H
0 |$ j$ X- E2 o$ v9 y' O矩阵的协方差:
: z0 r' n+ K: l$ `% e$ A7 v; k
4 g( d/ b3 V( u1 S( U
对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法/ d5 T, _% n8 c# i

! j! g  d5 b6 G+ h; q* C 1 `9 P  I6 R: @2 C) N4 j0 f
3 y' ~6 m& [1 }* Y7 ~
方差:(这是赠送的)
( e7 u0 G0 r% H
, w( a8 `; a7 m) k2 S+ n/ V, ?/ O
对于由N个标量观测组成的随机变量向量A,方差定义为5 w, e# `' Z7 y4 i% u2 w' Q( q

, A# G2 Z1 L- J5 ]* P$ l$ h
/ x* n  l: F1 Q/ d  B( [- l1 M& E& b( a: H
其中u是A的均值:
6 g  x5 g: x. e8 }1 S- n5 G/ @) n& D: x: _- `) L4 M

# ]; \8 b$ l( {. a- }+ n
, {- G' q6 T* q& G) e一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.9 b1 F+ z2 i8 u) @, T2 [# n: q

4 S% e3 C: T% V. Y  m! k(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)
5 x( G( w9 c- |' [+ ^. A+ z- k8 U5 |6 _
" |% g9 E: B  n4 ]2 \( d  y5 E
MATLAB中的 cov

6 I  w0 c; U0 n8 j3 L3 I3 Z" k# q+ K& x) l; U0 b' _% o
语法格式:1 ^* x) z$ |9 n9 L

0 Q( O& n4 i  K1 \5 q
! g( w' }! W$ J- @* A9 T
. u( T0 f( v6 d4 E5 R5 E下面逐个讲解:: k5 P3 O- s% L8 p. T5 Q; B

6 _5 y7 w9 P% E! T$ XC = cov(A)

& ?) T' [8 X$ |1 m+ k! Q: H" ^/ x. h0 S* f  t) Z) P  |- i
C = cov(A) returns the covariance.2 o- S/ Q0 K6 f& C) @' R/ ?

, B' x* z" [  |; A1 o; T, MC = cov(A)返回协方差。# U. b5 D8 z  q  f% G7 k) I1 x
6 F% H0 Z2 f1 |" G
  • If A is a vector of observations, C is the scalar-valued variance.7 H9 C1 R: `# j5 d* D' i

- O' J( T) m6 r3 w, ~: S4 i! J
  • 如果A是一个观测向量,那么C是一个标量值的方差。% G) X, t) [" R8 D

; s) R1 {! I9 B. ~5 @  s, ~) ?: D3 c
  • 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.
    : @+ p$ ?" Z" m# U- [

& q, D# H9 S' u( y8 X
  • 如果A是矩阵,其列表示随机变量,其行表示观测值,则C是协方差矩阵,沿对角线具有相应的列方差。(协方差矩阵的协方差是列的协方差值)" D* W) k0 a1 d+ `% Q2 R# \

' y) G2 E3 U' G3 [# A8 K0 i( Z
  • C is normalized by the number of observations-1. If there is only one observation, it is normalized by 1.; Z5 {0 O, _4 q4 M  C
' ^( b5 `. [: O" w
  • C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。; w3 k" y. U4 y; X( l

7 ?2 d& b% z* p$ @4 ^: w& ]
  • If A is a scalar, cov(A) returns 0. If A is an empty array, cov(A)returns NaN.1 a9 a) R* d8 A" Y/ o8 J5 T
* S6 ^: |1 p1 l% ?6 e
  • 如果A是标量,则cov(A)返回0.如果A是空数组,则cov(A)返回NaN。
    4 w7 R1 M; O* x, V8 W; Y& K: C! v

" ~' j5 U# B1 {) f8 E) v(你看看人家考虑的多周全!)& g8 A7 i: _6 W3 N

5 V+ I1 h4 d: w( F; V: t' Q+ A& i% S. z% I1 T0 ]" r, |! w+ |
C = cov(A,B)
* _# k: ^4 u3 ?7 ?3 y7 k% v
! `! U! R; T' `& d* P
C = cov(A,B) returns the covariance between two random variables A and B.
' X% h) m+ }) n( |& H/ I, G9 O/ a
' w# a1 c5 Y  I! tC = cov(A,B) 返回两个随机变量A和B之间协方差。
; E( a' U6 t# O6 ^, P
1 ?4 f9 n% `( Q7 ^! `7 {
  • If A and B are vectors of observations with equal length, cov(A,B) is the 2-by-2 covariance matrix.
    & p$ @  b6 a" D, `

0 ]" x, v+ L0 S0 X' ]8 W
  • 如果A和B是同等长度的观测向量,那么C是一个2*2的协方差矩阵。
    / a5 e+ u* l7 Z% ?5 O" p

7 @6 F& j1 S* A3 F  u2 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.' u1 N6 ?& Q3 C9 i# ?
# k% R% R3 b' @
  • 如果A和B是观察矩阵,则cov(A,B)将A和B视为向量,并且等同于cov(A(,B(:))。 A和B必须具有相同的大小。' G0 g6 W2 K/ V; m4 `. N! V, E0 N

9 Y: ?1 E9 r! ?! y" w
  • 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 q: R$ e* n" d/ U  ]) a. I

9 s+ `6 \0 `7 a, S) H( ^! x
  • 如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。- f4 n1 O/ j+ R  _) }2 [5 @: V

1 y& @. }% c5 p% }
/ N1 r( r* b' ^

7 N* v" h2 H( c) [8 d" a. G& YC = cov(___,w)

' ?- @# C: }2 o& K% f& ?1 P/ v3 u
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.( n( a$ G" G1 g" n) u( T

# T0 d. S& }: |& ?" bC = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。, e+ Y* `) Q/ I

+ S8 S0 q& c& ]( q. Q8 |; U
2 ^& v! O6 @1 o- yC = cov(___,nanflag)
( G$ P4 n' @& z: C& q* w$ N

/ b1 a) O& P, n9 dC = 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.. J& ?, K5 u. ?4 \  @& |$ Z
  i1 a' y- P7 x0 Y5 J
C = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。
: m7 }, K. z0 E# r9 c
9 Q2 w  M, m4 C$ w/ H
( i% U; \9 P" n示例

9 _& ]* E' h* Z7 {& E& z. m; }+ h$ U( x1 C
下面举例说明重要的语法格式:5 `% R8 o2 Q/ |$ C8 W% b/ v. w

) K, ]' E% j0 p& iC = cov(A) 举例(矩阵的协方差)
6 m  w; O! P1 {) X0 P
) ^6 I3 Z- e! {
Create a 3-by-4 matrix and compute its covariance3 J" ~. Z/ Y6 |3 e2 K
3 b6 B& e) Y3 ~$ Z
  • A = [5 0 3 7; 1 -5 7 3; 4 9 8 10];
  • C = cov(A)) e) o3 @6 e6 h! R, {) e

6 v  r8 `7 A2 j7 @5 a2 R
8 \1 L" O3 ^% m2 a! f
7 y, P. v$ L' I. J
* Y$ l+ n$ f: v- M* b: S
  • C = 4×4

  • / N8 U* G7 }2 b0 s) {& x; r  w3 p6 P% U0 w
  •     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
  • " Z7 I- x1 P7 G# g' m4 e
    8 O+ \( x  K0 m  l, W0 O
  ) k/ R. X( n/ i1 s
1 O7 g) N' d6 N- Y* ~5 h9 E8 H

# F1 J7 o! V- B4 O, m% l: BSince the number of columns of A is 4, the result is a 4-by-4 matrix.
" l  ]/ O8 ~$ H% D- z/ L- _9 R
; [; \# e+ k4 W  p2 X' A由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。
3 B5 D3 S# x" `) o: R
  a- x! p5 }+ k, R. Y- \* |' N3 r0 B) k4 G4 H7 D
cov(A,B) 举例之两个向量之间的协方差

$ P0 a5 p# c. d( _+ j
0 h  e7 f* T0 i- Y1. Create two vectors and compute their 2-by-2 covariance matrix.' w1 f( N: S* [
" ^8 Z6 @7 B. ^
  • A = [3 6 4];
  • B = [7 12 -9];
  • cov(A,B)
    ( v! L$ ^8 U* D! |9 q# g: Y& D% i

, e& P8 R7 k, Y/ m- f8 _7 Z$ B" A
+ g; w$ I" g  s6 @4 B0 b

. t1 k  }# y' F, i- r9 i7 \
0 B9 x' X) Q) t, O. j) B
  • ans = 2×2
  • 3 L, W/ ]3 g% }/ H
  •     2.3333    6.8333
  •     6.8333  120.3333
    / M. U0 H! S# v  _/ y8 r" k

1 ?8 E6 E3 `# T- q2 I6 h* a) `# V$ B' ^/ i+ k0 x; N9 _: N
5 _8 G; h/ O  {9 c2 p$ c$ Q

4 J. W$ [( L3 v: N% L5 x3 ^9 {( @2 wcov(A,B) 举例之两个矩阵之间的协方差
& f- N' I# z2 F" o; W( c9 o
' x7 d% z4 Y# m) e# v
2. Create two matrices of the same size and compute their 2-by-2 covariance.
% O* b. F' g. [2 H- q& S/ V2 ~# q9 n) V" I& r, P
  • A = [2 0 -9; 3 4 1];
  • B = [5 2 6; -4 4 9];
  • cov(A,B)
      ^: w8 n' a6 H6 d0 P$ o+ q* D9 j

( \. |0 E7 c) B6 a0 I$ C, b# V7 O: Y& \! \3 Q9 @

, w% @- y7 \! c, P# T3 {/ B" [! I( X$ A* j% y! z/ ?0 u
  • ans = 2×2

  • : j0 U, O. f0 a# i9 K0 [/ J5 q. B4 Q
  •    22.1667   -6.9333
  •    -6.9333   19.4667/ Q* P. b! i; Z/ O* M& G

, D- p3 q/ _3 J/ A. b; {% S" t( T+ F5 ^9 P" Z& k4 i

/ @- \* F$ C' d, Y1 f; F
( ^0 A& F! T( }$ @这相当于求A(:)和B(:)的协方差,如下验证下:

6 [4 e  B. c) V& a0 J9 H. c! ^( l5 D5 \6 e" K7 R& p8 Q: c5 H

/ n, k7 L$ v# {2 J4 M! W: T9 K! \0 k5 E) T& R6 C* \* ?* U

+ H; |9 d% U5 ~9 t) J
+ o1 _/ s0 u/ m( @& \7 L
4 {6 W) Z) |& h
3 p3 c9 O$ e; x: R$ X* |4 N对比下cov(A,B)发现是一致的:
* L/ O& ^$ V: c$ Z7 ]8 {2 r/ P1 a  ~6 W% S
% U! m5 Z( f! ?

8 O/ I' {. w+ S# T. _! [. r9 b
! O: J% l! S( @8 S) dSpecify Normalization Weight
" Q& A0 P1 {2 n' Z, |
# e) |2 H/ k0 G6 [7 e2 V+ z6 {
创建一个矩阵并计算由行数归一化的协方差。
- \& Y2 q7 d+ E) b
; ^$ B6 N. \! |4 w$ K) F, h1 E# R
  • A = [1 3 -7; 3 9 2; -5 4 6];
  • C = cov(A,1)
    $ L! c/ g! |( a8 z4 C- t8 H

8 [" |4 W9 Q" Q" V$ G: S% Z: e& \* I+ Z
6 X& F6 R! [  C( m( M
  • C = 3×3

  • : L4 D4 K+ E  W0 p1 A: I( L2 R
  •    11.5556    5.1111  -10.2222
  •     5.1111    6.8889    5.2222
  •   -10.2222    5.2222   29.55563 u8 Y4 O+ P4 _& s
# j2 E) S/ ]! A, q( u! q8 q+ k7 `* S' H) r

; L9 L( I9 x4 C7 u2 L: b

  C$ d/ e7 ?3 Z0 V8 h  r. L
, @* }, q# |# }' w7 U( H我觉得还是有必要比较下不归一化的情况:  q% ^$ w, h) o* H
# l6 h# K/ C! Z* x
>> A = [1 3 -7; 3 9 2; -5 4 6]- K" `5 s- K1 @4 I1 K/ U6 u3 M

4 T4 [  t/ [/ q) H2 SA =
) B. @) k$ S" J6 A* r$ n% X
+ u8 P# x9 B( G( E* \$ t     1     3    -7
' ]4 \& u+ n+ d( i5 I     3     9     2
. p* w% P) ?9 M: c; H    -5     4     6, U3 `; m5 h* w9 F* h

1 T$ n" ^& O; _# v0 l>> C = cov(A,1)' z$ V2 l1 d. t! x$ |

/ T; U8 R- y& c6 K6 o2 PC =7 i2 _2 C1 t3 ?4 a

3 ?: U5 M# ^0 t" A; `5 h. D   11.5556    5.1111  -10.2222
$ r; G0 b# @9 A4 r& u: F    5.1111    6.8889    5.2222
: n: L) m8 a8 a& l4 [9 f  -10.2222    5.2222   29.55561 r7 S- b* Z% ^3 s0 w( u) s. U, x; h
9 A8 q+ w% n7 |& ?3 C0 N7 R( G+ M
>> C = cov(A)+ t  n" b6 V, J' v3 C8 E+ N. b

! D6 E% {" y! Z, WC =5 K" T0 w0 ^; h$ J* {

1 m! A5 _( j* D  c' C6 T% w) W   17.3333    7.6667  -15.3333
1 D: k; @+ S9 i' p, r' y    7.6667   10.3333    7.8333+ {+ {5 Y3 h- Z' B4 _5 J
  -15.3333    7.8333   44.3333" `* |9 Z2 n6 \- A$ Z
& |0 o' _9 F0 U5 a, W3 ?% s: }. w/ K3 I
( d7 t+ W/ T' v3 ^; p. l8 S  |
Covariance Excluding NaN
- i  B$ q, w6 Q( b& ~8 f! m

! n4 Z% H2 ?9 X创建矩阵并计算其协方差,排除包含NaN值的任何行。! N# L( n2 z/ X

$ p/ D0 y5 M- V( ?! TA = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]
' O$ a$ H  L4 S8 P- Z

1 j: [) y8 L  q5 o; `8 x* \6 j
  • A = 3×3
  • 6 \" f( N7 W& c! i7 j$ s' ~
  •     1.7700   -0.0050    3.9800
  •        NaN   -2.9500       NaN
  •     2.5400    0.1900    1.0100
  • / b& ^( \1 Q1 w6 H

    " k& l( A# O0 n; v2 M
  
; J6 w$ \) C# p( B0 O) b! h8 i9 K8 c5 p
C = cov(A,'omitrows')
; H5 T. B! b+ C  w8 i  V
: ]5 L; I8 ?, t9 O7 Q6 S- @( m6 D: O
  • C = 3×3
  • & K/ K) M, r8 t$ b
  •     0.2964    0.0751   -1.1435
  •     0.0751    0.0190   -0.2896
  •    -1.1435   -0.2896    4.4104

  • 9 ^) |( V* P' Z
    4 ]2 y* o; B& t  d# a' Y

: n/ h% O# t# P8 l" T
( @$ }5 F* x  U( k( t
! \, S; |2 S3 q9 B* u+ V4 ^

$ [9 x7 a6 Z! S) d9 o1 ]% w

/ j! j3 ]6 Z# s1 [3 F% v
8 _- `: S; F7 A

& m/ L, v2 q5 U7 Y. X. T% h6 A" {& @. `+ f3 L# A* z9 t
; F/ n) J1 f  h
: O; F* C, I4 v2 d$ Z2 ]  m: m6 E
1 K! c9 w1 N. ~$ C! W' g" c+ }5 p; q4 e
4 t0 q. j4 L8 G8 o7 U
  F+ d0 S, r; J1 U: E
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-5 10:16 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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