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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

7 A4 q2 Z9 E$ [Covariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。% Q* N, o7 K, \' {
. K! h; Z, D- K$ N- l* {2 f
本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。
' A( S: J& k2 b2 o% s
" \& h8 _$ q( U" A0 h/ t; v0 a) `废话就说到这里,下面正式开始介绍。
6 y2 l4 W/ ^, a+ I7 A+ `' _
3 i0 p( q2 E: [4 p目录
- }8 R0 E/ q+ f9 \, n
. @% G& s0 c3 [5 [9 M+ c基础知识; g4 X7 R3 L+ s8 |% a$ l

) ?6 F/ D% E* e! }/ p" o协方差(Covariance):
- O. ~9 h$ Q" j* |+ G( U. h9 H5 i* p. ]8 k
协方差矩阵( covariance matrix):
, L" }( D& I6 L4 {$ u; g8 ?# I
0 u/ D9 ]+ B/ g, M0 D4 R' X矩阵的协方差:
1 y$ A& p# v6 I+ i/ Z
" g: l9 U" L6 x* s) b8 O  ~方差:(这是赠送的), j& ~8 ^% O9 N; O9 u

; t. x, G+ I2 L, x3 X  @3 M1 a* fMATLAB中的 cov; b9 ^4 n$ b5 x. m% m* Z

) t3 g) j% p+ M' ]语法格式:
2 d3 H" r5 o4 Z% Z( q! P  E; H7 R. {! {
C = cov(A)$ N% B8 t$ l7 v6 L' k2 O2 f
0 J; U- b$ H0 q0 Q
C = cov(A,B) 5 I/ k6 G7 V* j8 l  ]0 ^
: O% ?' y9 E3 @, r" C- P
C = cov(___,w)
3 O/ @3 ^) k: x0 X, N
( a* F$ s) m; `) sC = cov(___,nanflag)' y# ~& D, [5 C, x; Y) P

8 x" S6 x. B+ {4 X9 q: y示例
" Q& j; F) P' g1 w* V) J! C' g2 R& l% K! w; e# t
C = cov(A) 举例(矩阵的协方差)
# _* j3 [+ z: J+ t, Y1 b, H
1 N9 r) C) z0 v$ v0 ?9 Z$ }- i7 vcov(A,B) 举例之两个向量之间的协方差
0 a# d  D/ S, B+ @$ Q. [. \0 K; U4 E; c  P" W' Y# s/ I4 a# W0 D. [
cov(A,B) 举例之两个矩阵之间的协方差
+ a. G  M5 ~# Y0 t7 x' t( m) \% q" u0 W# x7 f0 I, |2 a
Specify Normalization Weight
0 W& h* p0 @7 X8 @" K* v2 E  ^
4 R, l  u; d/ k6 B, J1 I/ N1 fCovariance Excluding NaN% @8 P9 q% q1 c
3 X7 n7 P6 ]) s7 w/ B3 o. V. F
6 c( u; F- ]1 q' y* w: P

8 u8 @! E& t# c" H& l基础知识
, P1 X# O) K# w# `' n
协方差(Covariance):

- ?/ o: a  A5 M+ V/ m" H3 [9 Z6 _& t8 Y, N5 i
对于两个随机变量向量A和B,那二者之间的协方差定义为:0 i- g  |7 p& c/ K* c2 B
' u, d' S: ]2 y: ~/ @9 [
, F3 [! t- n: S1 K

1 w% g0 P' `% R7 G3 k8 a3 H. y其中表示向量A的均值,表示向量B的均值。1 i, A* U2 f' [; E; T/ B# N
- [  U- R, E) M# g+ a! f
协方差矩阵( covariance matrix):

" _" V. ?( \" b3 y% B9 ~' ]/ G6 p" M+ r5 s" N
两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,  s) c) f( e/ K  n  H0 B
2 w  R6 E1 K( C  c3 [
1 {: f. h' X% W) q# Z
2 J6 Q3 s  S2 T0 t! j7 j2 `
矩阵的协方差:
, D6 z: C& X% Z! L/ O8 c
1 S% \9 M. X4 s
对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法% k% I3 S. w, [) L. q
  d7 Q# m9 K' K2 j

9 t6 N% g  R# G0 t
  F  u3 }) ^: V$ _# v3 K) {9 ]方差:(这是赠送的)
4 y0 ]9 O: T& O  G" r
0 H: Y! b+ ]  D
对于由N个标量观测组成的随机变量向量A,方差定义为
, x( @0 O! y) h* x* B8 x
4 v) H5 z5 {! m; G1 f$ W- P4 W: f 2 y/ z" H+ U9 G

/ |/ M: \5 T- U  H$ \- z其中u是A的均值:
$ s* |7 R) H3 y" W' \% }* }9 I5 i4 x. }
) S" g$ F* f/ K
  H6 d- H; i& B3 q
一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.
, F. f' T2 U+ w; k) H  a/ B2 Z) m: H) V* Y/ `! d+ i) E" u
(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)
5 C( W3 O+ a  O: C0 q$ C
5 X$ J" C$ p5 u& c2 M. p( V1 v2 Q. J7 `- E1 X
MATLAB中的 cov

  w3 D. V" A& a) s$ V
2 f- q5 q" Q3 |* O7 ~4 x3 G: v语法格式:1 C* ^. V: k3 p1 S8 v

% o& y) ]0 q' @2 g! i6 Q$ X" p + Z' z9 E; j* V& i
; m! h9 }5 Q5 e- [$ A! C# G
下面逐个讲解:1 K4 m8 g0 z1 ]% U

; T' T1 W5 J1 ^/ l1 j0 u3 A, |& b  tC = cov(A)

! C. W5 F' T  X( Y0 G0 W- h6 z1 H
) q. A) ~! ~. }, R4 h7 C3 Q4 tC = cov(A) returns the covariance.$ |  i# E9 b2 N( v) j

: B# A& H* a, A+ \+ fC = cov(A)返回协方差。
0 b" z# g& h7 z' [. ]6 T/ r' a
* j2 f( x3 C; w) Z: ]
  • If A is a vector of observations, C is the scalar-valued variance." {; _3 ]$ v) ]* C  D. R. v

+ j6 ~6 e  _5 L0 \
  • 如果A是一个观测向量,那么C是一个标量值的方差。
    + r' t1 c5 v' \
5 u& O# g2 |2 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.
    1 R* m1 E/ x+ W4 s% Y: {- K
0 D# B0 k! Q9 I1 G4 A' w
  • 如果A是矩阵,其列表示随机变量,其行表示观测值,则C是协方差矩阵,沿对角线具有相应的列方差。(协方差矩阵的协方差是列的协方差值)
    - _$ w& L& o  Y2 f' u4 o
# g6 G' W, k2 {% x9 a7 [
  • C is normalized by the number of observations-1. If there is only one observation, it is normalized by 1.0 z5 v- |$ U1 z4 r# K7 o

5 N8 q' }# r% k  D1 f
  • C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。% s# K( a% o6 }( H" u
9 g0 y( w9 d$ B. E! s
  • If A is a scalar, cov(A) returns 0. If A is an empty array, cov(A)returns NaN.
    , O' ~; O; b7 R! w
+ W8 ]$ P7 a% t9 [) I( a# f8 V% {
  • 如果A是标量,则cov(A)返回0.如果A是空数组,则cov(A)返回NaN。
    1 s& e+ o5 \; d$ n1 H; ^
2 i  G$ t( Q$ D+ R! e- x8 m3 |. v2 X
(你看看人家考虑的多周全!)
# G1 b; E/ k8 [, W: }9 g. o1 L( Z( D2 U; O! q
, C6 c3 q0 {5 G. v2 \
C = cov(A,B)
# D" a" J, s# E/ N! m. w

* Z% P9 T- |& F+ D1 i& D0 SC = cov(A,B) returns the covariance between two random variables A and B.
+ ^7 |: v; `" x2 K" D' _  k+ k  |" s( x9 P. E7 {
C = cov(A,B) 返回两个随机变量A和B之间协方差。
9 l( {& l$ B( u8 z9 R( x# t* C0 I, y
  • If A and B are vectors of observations with equal length, cov(A,B) is the 2-by-2 covariance matrix.
    - W. e+ d: t- s' b; _% K/ t: S5 H9 O

+ W" u6 }4 z. F/ Y4 N8 L( ^1 v
  • 如果A和B是同等长度的观测向量,那么C是一个2*2的协方差矩阵。
    ! \. O. X# A# Q4 S  X
. h( n& s6 k. m0 x' n6 m5 r/ z& z' F
  • 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.6 q- J* s0 {- u& H/ T. I7 o

% W/ w8 x8 q! r; s+ k+ j( E
  • 如果A和B是观察矩阵,则cov(A,B)将A和B视为向量,并且等同于cov(A(,B(:))。 A和B必须具有相同的大小。8 y) ?# D/ b( q+ ?# w7 ?
) H# y+ d* T: {' q- i2 M5 G- M
  • 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.$ M! k8 B9 H0 `4 H1 J; y- G* z- m
$ |3 H/ b4 \" q) s3 m% ]# \
  • 如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。
    7 a1 x/ _, h( c; U' g

4 B$ i; m4 M3 u! q+ R) M" U# ~( s0 {

2 q8 o' W: V4 M; u
  R/ c- r- E0 x" k, v9 L) K: uC = cov(___,w)
: i0 I: i1 i7 \- A# x
* `7 s% c. t( F! l- N0 V# F; }
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.
& e. `# o. t' G0 }
  l( C3 d( r6 s$ ?7 L+ l1 MC = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。
* Y) @3 A2 V' g9 H9 k0 \1 f8 J  p. i' ~# U

0 `( `( M  B/ w1 B/ ^C = cov(___,nanflag)
$ ^9 R" c4 Z# f

. g/ d2 B- z  r4 [( G6 ?- e2 J0 JC = 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.
1 A% {  w) g1 j/ c2 G$ g4 p) T( ?8 d- @
C = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。
2 o' L0 @! c' {5 p9 S7 ?: S4 }: q) Z1 ?7 _' k' F3 w
" ]' D9 V$ ?2 J/ Y, X# @( p
示例
" A6 M# ?- m/ h8 B' u  T. k3 x

- a7 R5 K$ T) S7 X/ o# `/ G0 _下面举例说明重要的语法格式:
5 b/ ?9 h3 q4 v, A! B# W, {' G
C = cov(A) 举例(矩阵的协方差)
+ j& B$ u3 w8 v: O2 A
0 M+ ]( E2 Z& t4 q' p! W" h9 B
Create a 3-by-4 matrix and compute its covariance& R2 |* F6 L1 M1 w1 a7 B+ d- b
0 {/ l0 P7 c7 {. |* z8 F; D0 o
  • A = [5 0 3 7; 1 -5 7 3; 4 9 8 10];
  • C = cov(A)
    : S0 A+ j- T! W
) ^8 @2 [$ c( {# Y- K& v4 C

! N0 Y) {  z! l0 h" G5 D; N: D% N

1 E7 S% N/ O: M* q; G
$ b" ^# f) L: I$ }( K& }
  • C = 4×4
  • ! L- O. b8 F4 L( W) t1 ]
  •     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
  • . U. t( n$ u. s" x

    ; w3 i( T" Y$ N3 N
  
1 G) n$ l4 u+ O/ q7 X1 y: l

- F/ G4 ?( K$ w9 E: u/ E7 @2 V' T9 n3 q2 n9 q) e, B8 g: X' [
Since the number of columns of A is 4, the result is a 4-by-4 matrix.0 ^4 j8 u: k* V- b9 _. T  j, O
0 j8 p4 p' d5 j' \. @
由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。
* u" {+ v; }- U- D; N6 a4 L$ U! w8 D' k( \" Q4 a( o

0 }2 `, r6 G* S8 L3 Fcov(A,B) 举例之两个向量之间的协方差

+ X7 ^4 x! E& c4 d  H7 l! j- w
) a# j6 I6 p5 g1. Create two vectors and compute their 2-by-2 covariance matrix.) ]9 Z4 T& O3 N" i; K
  n% g7 ~  g) [; x! M0 ]
  • A = [3 6 4];
  • B = [7 12 -9];
  • cov(A,B)9 O! C1 j* b" }" I) [
0 f% h! O7 m; W" A8 T
& R3 K& Z$ p9 Y8 L$ X
( b5 m8 m0 f- \& n' R

0 E# ?" h, l. V% h
  • ans = 2×2
  • " H3 t& u+ p9 Y# @; c  F
  •     2.3333    6.8333
  •     6.8333  120.3333! C) P7 G' o/ i! ^

2 b: h5 U  s9 `6 H. f1 `
4 L; m& b/ S1 H( N, L5 ~3 P& B1 I& d
6 Z# V  r& @0 C' u7 J

& G; f4 p) T# m- s2 qcov(A,B) 举例之两个矩阵之间的协方差

' l: x$ M3 H) B) {; o  E3 Y, V! O6 \) ]3 h6 `( f6 A
2. Create two matrices of the same size and compute their 2-by-2 covariance.
* e) U/ e+ ^, B; h  m* g. V0 @% h& q8 g
  • A = [2 0 -9; 3 4 1];
  • B = [5 2 6; -4 4 9];
  • cov(A,B)- E3 T2 Y( A2 ~7 L9 n' ?

% R6 p" V( B1 T1 _. r- a$ ^" C) ^7 Z
% ?8 q) {* J2 x2 T8 N- M# ?
. \8 B( x1 o8 T4 O6 ]( `) w$ w0 g
  • ans = 2×2
  • 6 P+ V/ X3 D: j6 d! s9 I4 V( I3 n' S
  •    22.1667   -6.9333
  •    -6.9333   19.4667
    0 C4 W) J8 `- w9 h+ j" W& w

7 E6 E$ S9 E1 p, K" H6 B$ v+ V, @- h* k9 T1 H

3 h- a8 S6 X0 Y6 G
- N; Z( {. a) k) Z! R) D. u这相当于求A(:)和B(:)的协方差,如下验证下:
  D( O5 l) A% k3 t2 m0 I$ [

$ o% }9 p  |# A9 _+ E! W
4 V8 s' B+ Z3 }
$ i( T7 H) i8 h
( e9 A0 `! W; v3 G- t& N
, y" z) X/ c4 m/ D . z, g1 d( D; H& j

7 c( @/ R) u+ W8 J4 h1 V, H/ J对比下cov(A,B)发现是一致的:5 Q. _3 O% n* m+ a

2 I* ^; U. ~( z# u- Z' V
8 H( N. u6 K! z$ F& [) U& F
' o5 e: `+ C, @/ n' f
; s+ O8 K- Y! f1 h! ISpecify Normalization Weight
9 _: u8 l" X1 u# i

* k1 M6 h2 g' l! U  ^/ Z5 z9 M- q; n创建一个矩阵并计算由行数归一化的协方差。! E, W# W$ ^5 K/ A
( }* c% p* r6 C# ?( ^
  • A = [1 3 -7; 3 9 2; -5 4 6];
  • C = cov(A,1)
    % b5 I$ ^; G, k0 A% U

0 _$ g& C5 }% x! z4 R- V
, A. k, }1 ^& g2 i
  • C = 3×3

  • & M* Y6 v; s. T! O% A
  •    11.5556    5.1111  -10.2222
  •     5.1111    6.8889    5.2222
  •   -10.2222    5.2222   29.5556
    4 q2 \2 D+ R9 I+ }$ H8 p7 @

9 N) {' v9 t# j4 m4 R6 o7 b2 ?
& f6 Z; ~1 p3 F% |* y* x
# b0 A' y0 d' ~
$ q  w! b) `: A& w/ O% A! j9 e
我觉得还是有必要比较下不归一化的情况:
# l* [1 y% Q* j% N  [& E
  s, y! o$ m. A3 Z>> A = [1 3 -7; 3 9 2; -5 4 6]% U; X& B  P4 D# z0 R, ~. Q4 u) i' d# J

( E$ R9 L2 }9 Q1 l8 JA =
+ U% M; \6 C) C. j3 J7 o6 z4 @7 ^- |. Q3 J
     1     3    -7
$ I. C' S5 l/ Q; H( m  C+ v. w     3     9     2
6 \  A( `4 j1 h0 {3 y+ F9 m" ^    -5     4     6
$ D1 e. c' \) {: u1 w  |4 X: j: Q4 a7 F  D7 T) b
>> C = cov(A,1)" b! X. p3 V5 ~, Y

, D" Q$ @1 J' Z4 u) VC =! |, ]- V+ E+ O1 x' |1 F# w5 L) G
! |3 x$ o$ _5 x) y
   11.5556    5.1111  -10.2222
+ V' I) d4 B' @( i) G  A    5.1111    6.8889    5.2222
' @1 C6 i0 t7 S+ R  -10.2222    5.2222   29.5556. F6 D  o  S' y  U8 x
+ K5 z& D  |$ I! ?/ s7 f* T
>> C = cov(A)
) Z4 y6 A/ J, T- X& u! I& O5 b! s, h- x& }
C =
/ ]0 j" R6 C5 X* B3 G* O3 H4 [
* q$ n. M4 b) c2 l+ ?4 W( O   17.3333    7.6667  -15.3333% j( E2 F- l6 L1 Z6 i
    7.6667   10.3333    7.8333
6 h; M3 v3 ~; d4 _# c4 V, p( Y& d  -15.3333    7.8333   44.3333
9 x' s5 u: q; b+ [# a/ g
( x8 N' p& A" k4 g  f# @0 K8 @3 V' s% o5 v
Covariance Excluding NaN
) S! x8 Q3 A9 L+ p/ q* E# N

9 O" v) F; L8 D+ ]% Z创建矩阵并计算其协方差,排除包含NaN值的任何行。2 R5 s, H: I& ?2 I( F( V- j$ L

  D8 g* i) H; [A = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]

& Q9 w3 h2 l% c
7 K* d8 V6 m8 U) q( Q* E" U
  • A = 3×3
  • . g! f) C$ E5 I0 _; V
  •     1.7700   -0.0050    3.9800
  •        NaN   -2.9500       NaN
  •     2.5400    0.1900    1.0100
  • " L( F9 C- g  O6 w4 u

    & F1 J. L, [6 Z; m$ m3 j, i
  8 G: e. m5 S7 K( g8 T3 P+ F
- R6 e9 N7 i4 v! y+ Z
C = cov(A,'omitrows')
' x6 f5 W$ `% r3 P7 I% k( F

2 ^- M& I7 v$ u4 k$ e( }, Z
  • C = 3×3
  • 6 g3 R$ X1 Z+ O9 V  H
  •     0.2964    0.0751   -1.1435
  •     0.0751    0.0190   -0.2896
  •    -1.1435   -0.2896    4.4104

  • : [2 G7 F& V$ v" i5 U

    & @1 Z5 |- A( g) g; y

. o+ ?& E) x' c& ]1 z7 i; F+ H9 T, b0 p

' z. m  K: I( Y. q8 S) r1 {% o' `+ [6 q+ Z$ A7 B" C. ]2 Z! Q- W7 g

$ A) I2 }' W; X. R* i% @5 h- N( \

, d; V$ X" T3 K. y- F( y% P1 f$ M2 t: f! w  g

  F# s; M- u1 h; |0 V+ S- k$ Z9 f8 u! V
$ n. z1 e1 K; ?4 G

2 g# b4 h! _$ C
' S( l( D5 \4 _6 g. q  E
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-29 22:15 , Processed in 0.187500 second(s), 26 queries , Gzip On.

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

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

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