|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
* W& M1 X& p6 y2 q8 ~$ D
Covariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。' y" r7 ?% ]- s
4 V: i2 ~+ N' W4 F; y7 u本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。
5 a' e) C* L; d% o! z& S" s- D4 G
废话就说到这里,下面正式开始介绍。9 R$ G, L ?' l( K7 U1 G. p
* t1 J! G7 W# c
目录* `" ^, U: \9 z
" o% \+ {- v T5 A! @# S基础知识
1 w6 k6 W/ Y* A- S& T$ f7 ~: [
% T0 w0 P$ i: @协方差(Covariance):3 E/ h- U3 D; ?& \5 i8 P" e
w- j' E" C4 |! Q协方差矩阵( covariance matrix):* T, V/ Z. ]0 W
/ B& T/ z* h% s
矩阵的协方差:1 s* A( g# h3 i
! R0 d# x: p7 g& a
方差:(这是赠送的)
# \- ^2 \5 ^9 v) F1 v
+ N4 T" y3 T2 X, k% F+ F/ U9 h ]* WMATLAB中的 cov
* T5 Z8 D4 D9 L! L3 c1 ~
4 v# w1 l2 D" R! X* y语法格式:
2 C) y8 F* E4 ^5 [4 S
9 [5 j$ Y/ a4 g, J5 I# LC = cov(A)
8 A$ B. i: e, _; ^2 ~+ g7 m/ g' E4 E1 x$ h. I
C = cov(A,B) ' v4 ?6 v$ v$ P& r1 |9 [5 s- Z
* G/ h+ _( ]5 r6 [5 T7 zC = cov(___,w); W2 m) w* T* _0 Q! Z
( Y4 Z' P0 n; S/ kC = cov(___,nanflag)" K7 ^5 l) D& N
; {' V0 j* x* C2 _+ d8 B
示例2 V# f, N+ k* c# G
" w: \# m- m% s6 C/ YC = cov(A) 举例(矩阵的协方差). U/ P; }+ G9 m3 s
2 v2 {% v/ r/ V6 u. Gcov(A,B) 举例之两个向量之间的协方差* t6 T1 U0 I9 p# r# b* w
0 ^5 S2 i4 _+ q+ Y! Scov(A,B) 举例之两个矩阵之间的协方差
% s. E' a, h' k) [) @8 }5 N. h: d: S7 A% ^$ c) s9 X1 S
Specify Normalization Weight0 t* ~' R9 A8 _8 d& s& z$ h2 I4 O
8 G# c7 l2 T. Q4 f3 S1 a1 d' c
Covariance Excluding NaN
1 A+ [1 s& p$ o3 H- d& ]" D. J& g, K y) E/ n4 C
7 h* f9 r/ X+ N' M; S m3 F& }) x
基础知识
9 q. i1 S* w* L: h" h; _: b+ @: r协方差(Covariance):
+ @3 c" y: f8 p2 S7 e9 z' s1 |6 o. c% J1 s% \
对于两个随机变量向量A和B,那二者之间的协方差定义为:9 L; B; c0 i; V$ M, f+ q
" N9 Z! I8 y; E& o8 s+ h
* J- P; h3 R: B, b9 [" O1 \9 k
: A% O" q) ]( h$ w. c2 g其中表示向量A的均值,表示向量B的均值。0 ~1 J2 _6 P9 Q& b1 s
2 \1 x- a, D$ P; O( \! U1 j/ g* j
协方差矩阵( covariance matrix):# \: [" S5 t! J5 G( u. W
5 Q* K3 H4 B7 \+ O6 f$ F! ~两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,5 t6 {: y4 S; ~& m3 J6 l
- N6 ]. S$ z+ o* _* Z/ |. {. m4 |
3 e! n# w# R& O$ B9 t
5 z( g0 t7 }- D' x8 F; h0 z, o* s矩阵的协方差:
% r3 N1 B `* ~4 _2 H( A6 S" ^! S( T
对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法
& J& M( t" X+ }8 ]. R% ]
' v3 _6 a6 y0 C9 P, p. [. r! n
0 W0 c2 E7 P2 v8 j W8 ?; c' ^2 W6 G1 e8 T/ j% K ?7 ~
方差:(这是赠送的)
; C! l3 i% ^3 N8 L6 ^' \; j3 Y$ D/ ?" o4 f, ~* R& D/ o
对于由N个标量观测组成的随机变量向量A,方差定义为
9 \: ]! F+ J0 {& X" v
. x! j2 ?5 G q0 }8 j
$ z$ n& X {. t! p! c: `
+ c, N% z$ V; d& |9 N5 C
其中u是A的均值:. }4 ~4 o( E9 {% s
" a5 e5 C# u- o) d
( Y4 S* l. E3 M2 G
9 v, a6 ]- J& ?. x2 d* b& a) ?; \一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.
# U% e$ S: W, x
( n2 M) {" u% k, A# |! R# u, j(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)- ]5 i7 I+ b% z* s
4 x) O( ~# {$ t& v, V
/ K" O3 `* i7 Y/ ?* ^MATLAB中的 cov/ X8 s% P1 u6 i# b( _0 F9 n
1 n! z! }' d) `+ _7 d* U! S2 E. [. H语法格式:# s4 b- \: _7 Q0 k! M& A+ Z
/ @4 r7 Y; d. [& Z+ C9 T; h% M
$ J1 G" H* _0 v0 m( q/ l! [& z: \
" F$ O* q/ |" P, p下面逐个讲解:
% X- ?" b7 x& @
* C7 f4 `2 p1 }C = cov(A)
: I" G u" ^2 W" q
) n- V1 Q+ o3 n4 [C = cov(A) returns the covariance.1 G+ _7 r2 K6 F9 P
' Q/ l# Q" Q4 L: S/ M$ v3 {; AC = cov(A)返回协方差。
5 @ u# v( n8 n& ~+ g; K! T7 W1 p0 m) M
- If A is a vector of observations, C is the scalar-valued variance.2 A( C3 g0 h4 a- Y, l0 p* p
" q( T4 }) h' F s: i- 如果A是一个观测向量,那么C是一个标量值的方差。 Y* @* H. `. A% } J! S- S
; E a0 H. |9 z
- 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.+ _9 z! X' @. a; @
- Q1 J/ R" }" R. ]4 _
- 如果A是矩阵,其列表示随机变量,其行表示观测值,则C是协方差矩阵,沿对角线具有相应的列方差。(协方差矩阵的协方差是列的协方差值)
. t' ~ x* J+ E/ i0 r
$ f2 u# f d" D, W4 O1 j6 Y% x+ X6 u* k- C is normalized by the number of observations-1. If there is only one observation, it is normalized by 1.# ]5 N9 D* H H q( L9 i
t k8 z& f+ i2 O5 D, z5 Y4 v
- C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。
. [% E/ P8 |3 L: ~9 t$ \# R' F6 v% ~ 7 w) y& }! E+ }& x* r
- If A is a scalar, cov(A) returns 0. If A is an empty array, cov(A)returns NaN.
' _$ E2 I; b! @
, B& U+ _% U5 U+ e5 ]% a6 z9 J8 L+ x3 _- 如果A是标量,则cov(A)返回0.如果A是空数组,则cov(A)返回NaN。6 F" l4 D& H9 Q% g( A! u
( [! X; Y4 h& b(你看看人家考虑的多周全!)
( \% S3 |: z; d i! h' n
2 O& t9 b: C! i$ p2 A4 a P/ F! z0 G4 B: T8 m
C = cov(A,B)
& R& R- ~: h1 F3 p' H
. L% r; ?, u) XC = cov(A,B) returns the covariance between two random variables A and B./ r% N" Q& H+ e$ g% f9 J
0 R! j4 ]6 a7 c- A/ W0 X$ p0 aC = cov(A,B) 返回两个随机变量A和B之间协方差。8 _$ y% k* D0 l7 F: F
# D2 h- d; O5 K% C( s- If A and B are vectors of observations with equal length, cov(A,B) is the 2-by-2 covariance matrix.
6 g; ^% e8 v1 Z+ c0 f& _: _- j2 ]8 \ , t) s( k3 B8 z3 |% B5 c
- 如果A和B是同等长度的观测向量,那么C是一个2*2的协方差矩阵。8 N7 h$ C# E6 c2 L- Y2 t# T$ v
4 K; V( J) T% _4 [- ^. x4 z3 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.
2 R* W& @) m- {9 x- {; U; B5 U . W" \, P- V, q( i* E3 }0 V5 B
- 如果A和B是观察矩阵,则cov(A,B)将A和B视为向量,并且等同于cov(A(
,B(:))。 A和B必须具有相同的大小。
$ N I5 |- L8 ]/ } ) ]/ }$ a- W, |% l8 |
- 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.7 k4 i" ?/ u y$ a, u
. G- y) U8 z% D/ w5 B4 [0 P
- 如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。) ?6 N# B4 N8 L1 z6 b
$ y1 q6 Y5 g7 D9 N, E
4 L( ~& g: O( {+ ^8 w4 _) G
8 E3 W; d$ G2 ~# S/ wC = cov(___,w); [4 o5 l+ _$ p1 B; W7 u: ]
* `' _, y* y# I
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.4 T1 N2 p1 L8 n; e1 a) P3 u
1 t2 ^8 x { y9 i1 J$ h6 v7 \C = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。
* M3 J$ L! f1 a
; v' `+ W# d1 f, q7 ~, h- c$ K
: H/ ]) f8 e3 a, c( W. SC = cov(___,nanflag); Y& S: Q; b9 B3 ], ^3 [
$ @' P; Q- D8 l1 d! b7 A* CC = 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.: a+ F/ [2 }4 q+ k* f
0 [ y5 Z" @3 N I
C = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。/ E2 S s) P* o
- }6 I% N. _/ P. ~; D6 K
" |3 N) [+ b8 O5 s+ v: b4 o# H
示例1 D2 n4 T( y( Q5 ]6 B
e8 ^ v/ s' E) @下面举例说明重要的语法格式:
. H/ U: ^6 ]# A% L4 w' b3 S. `; x3 C% i( j) M8 i" ^1 o
C = cov(A) 举例(矩阵的协方差)
* M3 T$ Z7 Q6 P2 J# e" |& [+ Q2 N8 w. d' c6 j8 s
Create a 3-by-4 matrix and compute its covariance. w$ h. K9 A6 f7 x- Q3 z3 a
. r4 C/ e* e! J
- A = [5 0 3 7; 1 -5 7 3; 4 9 8 10];
- C = cov(A)
% ?8 [: \- C2 F* P: V 5 d9 D9 q3 f. b4 w* A
7 P6 t) T! H% p s: |% a# a/ G1 L
, q* [0 M) h9 W$ j) H" G7 v! F) D u6 k: D) D
- C = 4×4
% `7 Y8 _& J, u$ L$ x- 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
& p8 v) w6 i" Q1 T# ~3 f& x
- o' l9 _! A; U) S9 N# c
2 {& [* f7 ]" `9 {7 d+ M4 U
7 N/ i' g( ^ j4 Z: s$ B! z# K4 [4 j& f ?8 U6 q4 U
Since the number of columns of A is 4, the result is a 4-by-4 matrix.
4 _" D& q4 n8 u( ]5 s$ A. p2 _8 c6 @" m: g: Z
由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。1 }% G/ \& p4 A
5 Z; {2 d# R. i5 _( B7 A
4 E$ F1 L& ?% Z/ G& V/ X7 i' |9 Dcov(A,B) 举例之两个向量之间的协方差- J. k7 [) e" b5 q0 o! [
1 R& H# @9 z+ L8 z9 F# p1. Create two vectors and compute their 2-by-2 covariance matrix.0 N3 x* ? |" A- R
% E6 b3 W& Q+ w" t, y3 k, e
- A = [3 6 4];
- B = [7 12 -9];
- cov(A,B)4 t" @4 x( l+ q, G" j3 x
; F v- @7 k& ~3 ~0 G* Q
1 g# R8 e! { \' X: |& I2 q) N, b4 a) A) m1 T
$ d" W$ U% G. L1 f/ b! q+ r- ans = 2×2
6 n- T9 g4 @' e+ M- 2.3333 6.8333
- 6.8333 120.3333
) I% c5 H$ M9 s5 ?% Q" Z0 q9 t 2 o( s! G" v. N% O
+ z; j# W1 ]1 C; r. ?
& A7 }' V, f* i* z+ z0 [5 @
9 w, c( W# [ r8 R* R" r: f1 kcov(A,B) 举例之两个矩阵之间的协方差
7 ~, m1 T5 K( q, p" f
! v3 j* A7 r, |2. Create two matrices of the same size and compute their 2-by-2 covariance.
! K9 [3 F: E ^6 n" E1 T0 m1 ^3 V3 p% P/ {, a; @* M/ h
- A = [2 0 -9; 3 4 1];
- B = [5 2 6; -4 4 9];
- cov(A,B)
u+ I2 u- a8 G% H. _7 ~- w ( U0 \% ?# n9 j! t5 X: F6 ~7 ]
: |2 t5 @, @$ y$ r
- X& H% g. T+ A) F- g5 t+ ?1 H: P' a1 v% k+ [
- ans = 2×2
- 9 T1 }% b* J6 Y, k
- 22.1667 -6.9333
- -6.9333 19.4667
# s9 d% p' B" G' R7 x, ~( _
% P4 r" j5 i% t" M7 j# ]( j1 x6 f& }( g4 @/ y
/ P1 P% L0 z3 a. W' p( M" Z$ F4 o, h
这相当于求A(:)和B(:)的协方差,如下验证下:) f2 H' E# `( Z# U
+ y C: n' k y
1 |7 Y8 v, a0 d8 a Z3 t$ l9 ?% A# T
0 z9 U+ [1 F/ a0 r. ?
5 o# \& S9 T/ t) D1 k0 q% q
& o+ |9 O: S3 [& R
# T. v+ P. d: X
% S; ~( y' o9 r3 `9 X% o2 x$ i; r对比下cov(A,B)发现是一致的:* m" W% U6 [$ b, F( U$ C; \9 E
9 S+ |9 @8 O- V# J% `& s1 r( H
9 K( P z/ G" E) ]8 S* r3 o% R+ w E2 M. I# V5 X u/ m
, B- n Y, I+ c! P
Specify Normalization Weight: d! Y& m& S5 w5 n. r6 u0 s+ \
" e ^6 H8 w3 X- A+ o创建一个矩阵并计算由行数归一化的协方差。
' l. l, j. W& j$ {' O7 n9 Y0 h2 V" H& f" P* T! o' O
- A = [1 3 -7; 3 9 2; -5 4 6];
- C = cov(A,1)
, z5 g$ w! A9 D
+ c$ H- ?7 R) a
* U: I8 u K& M) h) W9 b: P3 ^- C = 3×3
- 1 A0 ?: k8 v: I* h! i; ]0 f
- 11.5556 5.1111 -10.2222
- 5.1111 6.8889 5.2222
- -10.2222 5.2222 29.5556
7 g7 A. H2 q* a! P+ n; X$ ~/ c 7 Y0 B; N1 k& [) s
7 j4 S3 N( ~+ M6 Y
+ @6 t+ l$ a. D8 B/ A2 O
/ o5 q, d2 L; @3 _
我觉得还是有必要比较下不归一化的情况:. [1 ]5 p& i1 G/ a7 k
" n, e1 j5 b4 R7 R( u7 }* N, p>> A = [1 3 -7; 3 9 2; -5 4 6]
8 b1 O( d0 Y3 e& G
, w" C. {/ s5 C9 z, I6 l, BA =6 [9 }) `! ?+ P7 n; ~
# G$ n; Z7 f9 Y6 e0 Y2 x0 ? 1 3 -7
1 n5 T4 y1 m& s 3 9 2
; n0 y" S: k3 U3 Q' Z6 h T% w -5 4 6% K- u: o8 n* G
! k5 p6 m6 j( Y& \0 @! v2 S
>> C = cov(A,1)
, e4 Q- L* u# |' L6 r
* E, q: v+ C. j" iC =
" N% Q0 W0 Z q6 `/ ~, }( w+ _& c! ~
11.5556 5.1111 -10.2222
6 }, @! e6 M) S5 Q G 5.1111 6.8889 5.2222
3 S: Q" b" p5 c* B3 Z" z' e- j! z -10.2222 5.2222 29.5556 ?. s; F- e5 C. _
7 |' N; s6 \0 h0 T1 ~3 J( ~$ ?% c
>> C = cov(A)
# u- X: z4 L0 r8 ^) j4 f
- ?2 a9 S2 s! LC =
3 m& O2 W$ D; Z* ^6 w/ t. t8 W% U1 |$ [) o. [' C
17.3333 7.6667 -15.3333
2 R1 p' P @/ m 7.6667 10.3333 7.8333
; G- x7 P6 R- z$ J/ {! w% ?( }. z -15.3333 7.8333 44.3333
- @9 r$ A x# t' W% e( a* p/ C$ O( W
4 {& h; o3 R) ^' V, F
Covariance Excluding NaN
/ Z% F t6 X4 [; p
* T6 }1 D/ o+ }. J" q" \创建矩阵并计算其协方差,排除包含NaN值的任何行。+ t6 R. y% M$ X4 n( ?
& I7 b% T* J5 [' X1 A" y+ U' i
A = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]& a$ X# @. d$ Z
0 h+ g E- A$ A5 D
- A = 3×3
W+ T% y7 f; {2 R/ b. @) ~- 1.7700 -0.0050 3.9800
- NaN -2.9500 NaN
- 2.5400 0.1900 1.0100
- ( d) I: w+ F2 K) o, ~2 S4 ^: {
- @; ^& E! S( o1 J0 i. e5 W8 s& T - C- G9 t/ N! D
! ~. U q; \" C* j4 L* `- N' ~6 l9 CC = cov(A,'omitrows')$ Q1 w% b1 s0 L; P( Y8 M2 |
1 k4 K! s2 ~& ^- C = 3×3
- - j* D, ]0 z2 A5 w
- 0.2964 0.0751 -1.1435
- 0.0751 0.0190 -0.2896
- -1.1435 -0.2896 4.4104
- 9 |0 c6 ] h: s8 i/ f0 j9 ^0 v
. E0 V1 ?; ?2 K0 n" [ - v: k/ Q+ ]" `5 c5 h
! a9 _: V) F0 p" u1 d' c6 f1 }4 K' m2 u
+ C0 E- N3 A& \' W7 R7 z3 W& {+ O# ^9 z8 \9 i* P4 G# I
$ o; I% O2 ]5 q1 O% u, D' ]: c" j" f3 ]* v: F' N
+ E1 l6 R* Z# a0 P
, _( x" f: A# x0 X; [- J+ K& y" e" G$ A& L3 l& }
8 v# O' t% K" o5 C2 o1 K; O6 `
0 `8 q+ b1 |4 B1 ?( @& ~6 U
1 ` l& e! l- j5 X: \ |
|