|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
- o' R5 o" f/ e- p9 O7 n4 [6 k
Covariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。
7 B& O0 {, ?6 Q5 w8 z
0 U6 r. w. I/ B$ G3 B- O本文内容参考自MATLAB的帮助手册,有的时候不得不说,数据手册才是最好的教材,不仅对于MATLAB,这里提供的都是原滋原味的官方内容。例如我经常去了解一些MATLAB中的相关函数,命令等,都可以通过MATLAB的数据手册;如果我想了解一些IP核以及与之相关的知识,我可以查看Xilinx的官方数据手册,内容应有尽有,相比而言,如果我去借一些书籍去查看FPGA的IP核,不仅版本陈旧,而已也有可能翻译的有问题,让人一知半解。/ X& S9 q8 h2 X* I
; N I. u2 x/ V
废话就说到这里,下面正式开始介绍。6 ~. ~/ k6 |) Z4 s: _. q1 j9 D
5 M' G& t$ X6 N" H: F0 B' E3 z目录
$ \7 Y; H; n8 ~; S8 x
( P: o. j& O% R基础知识
; \' J+ |! S/ ^! p0 T/ v3 {# i/ Z! @6 ] Z
协方差(Covariance):
, s0 T( F" V4 B+ e# b6 c! w8 r3 @. r' F# H. G: g
协方差矩阵( covariance matrix):0 J& J; E4 ~( z" T2 c
. q8 H9 M+ ^6 W5 M+ j矩阵的协方差:
; D% ~7 {" i3 P# K3 E; _ \" u; z; z; f* E* G/ M _, [' o
方差:(这是赠送的)
, l2 W# K) A: v4 K
/ k" i2 }6 |: M* EMATLAB中的 cov$ y6 e. E; W; o5 {) c- S
/ P4 z$ K; m/ U7 m
语法格式:
{( V S' }; W# n4 h+ m& O% \- ]# t ~3 N8 j
C = cov(A)& Y; s5 A& J6 y' f1 f. {+ z4 ?
6 h) l8 ~% ^; Y8 F; wC = cov(A,B) ; D o; {9 C5 d
( t5 y0 M2 X4 y7 D% L2 q, ~6 J
C = cov(___,w)6 l# M/ L0 e5 c# R( q
7 D- S- s1 B: h( s) ]8 pC = cov(___,nanflag)
" |$ ?, ]2 W; N9 P8 \* M" o' k7 g, a' `" U
示例
" A# v+ `$ N1 E6 a# m5 f
/ W& K, S' u$ P. E' B, YC = cov(A) 举例(矩阵的协方差), Q" L: J) B2 W, y! G. Q1 x
9 r/ J% q5 F3 I# Q2 E" x( R
cov(A,B) 举例之两个向量之间的协方差- Y! ^6 h5 J. E+ G, o
& d; D' H8 Z) ~* b- u$ ~) V8 Z
cov(A,B) 举例之两个矩阵之间的协方差
" l2 j. I1 S+ q3 K1 [2 U7 e: a" j! B% u
Specify Normalization Weight
5 {% d: p/ a5 {( Q0 ]
% a+ G" V% F( \Covariance Excluding NaN: X) F) F4 M a8 W$ a1 I; n2 \( z
6 T4 m2 @5 V% w* \, H7 A( x
! d- K6 Q- {9 A k3 E" G- |+ t- m2 I! `5 W
基础知识7 g, G L, O2 l5 ]6 W
协方差(Covariance):: o! h, X7 \/ V1 y1 j
8 L' k! }: V% h" {4 j. C. m- ^对于两个随机变量向量A和B,那二者之间的协方差定义为:
& u$ y$ U' Q* H" l# K* e$ C9 m* c: z/ U& z4 F
8 p) K2 W; T# e Q' f& R5 ^; G
1 N% U. \7 U7 O# ^
其中表示向量A的均值,表示向量B的均值。
+ A% U, Z4 n: { a$ B! w: F, {4 u$ R& |, D6 ]" Q
协方差矩阵( covariance matrix):
I6 ?8 f: o g5 n" D) S& p# B* h& j1 G s4 w# K
两个随机变量的协方差矩阵是每个变量之间成对协方差计算的矩阵,
5 S7 U1 T& c/ F- e/ ]5 g7 Y7 Q9 g5 T' x# s* K% K5 M
" \$ V5 v% B2 Z7 D, q( L5 c3 y4 k# ^3 ^+ W
矩阵的协方差:/ y5 q- V. e! W$ j2 e
* n& }; S/ Z. q+ f
对于矩阵A,其列各自是由观察组成的随机变量,协方差矩阵是每个列组合之间的成对协方差计算。 换一种说法4 \) V N$ F) M8 R* h j
' a% x/ [$ H/ H
: o* m3 {, ]. J+ p3 Q! I1 M. p
9 N# a, c) H7 C/ A, y* n; j方差:(这是赠送的)% L/ ?! w7 [$ L5 V2 P
. _5 K7 e+ W0 I7 v* {, d6 i% s对于由N个标量观测组成的随机变量向量A,方差定义为! Y6 j6 F* x6 U# Y+ t9 o
. h x) t6 B* }7 F( s. f
# a$ f% W# f; z
' O- W, N3 C5 a" s其中u是A的均值:
+ Q4 J6 V4 y( }( F! h& N# u
) v T A: v0 h2 q$ S
) X& y& a% B: E9 k* ^
) b% O: S) a. S0 X: n/ O( P一些方差定义使用归一化因子N而不是N-1,可以通过将w设置为1来指定。在任何一种情况下,假设均值具有通常的归一化因子N.
* G9 n" q* W& K4 G
4 [/ t& i: ]) O: d+ m7 ?(注意:w是后面要说的MATLAB里面的协方差函数的一个参数而已,在具体的MATLAB函数里面可以通过设置w来指定归一化因子!)
" \: y; h2 h, G, j A, O
- y( M% ^0 ^" U6 L& s) u9 [% f6 \: j6 W% q3 n3 \0 z
MATLAB中的 cov
& y5 z' i7 V9 q/ v
; i+ ~$ R* O# I. S1 x语法格式: C- q" D! K- @/ N# v7 M2 E
# Y% K# |( N: H! B/ Z' N9 P
8 N G% s; ^* u
) T# ]1 m; D' U' D下面逐个讲解:
/ }( Y7 a% d* U; b8 q: |: d" [1 p) H' u2 y6 n
C = cov(A)+ V$ j2 \+ E" v" S7 w
$ k- J: Z2 `* r! J/ R% t. X
C = cov(A) returns the covariance.
% W$ e. m& }5 C+ {
+ F( Z7 |) Y, Q( e* lC = cov(A)返回协方差。
& `' r5 o; B/ k' \ {2 V% ], C$ Y( K7 D
- If A is a vector of observations, C is the scalar-valued variance.
. _: P% j/ R5 E- ^: R. ~ ! Q7 _6 y- o/ Z/ L$ G4 r2 K
- 如果A是一个观测向量,那么C是一个标量值的方差。1 M. F; r" k* h, Y; T. X
1 H! |2 Q0 F9 V6 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.
- {; C- Q8 M$ F, g % ` _ l. |8 k1 G& \: V4 k
- 如果A是矩阵,其列表示随机变量,其行表示观测值,则C是协方差矩阵,沿对角线具有相应的列方差。(协方差矩阵的协方差是列的协方差值)
0 c5 I- R3 w) y- I ( j! t% {4 y- d' A% W$ G4 Z
- C is normalized by the number of observations-1. If there is only one observation, it is normalized by 1. f4 u8 O( @) R# a, a; x
/ {7 ~0 F$ y( f& ~; `3 l- C由观察数-1归一化。 如果只有一个观察值,则将其标准化为1。
6 z4 {# O% o7 [/ q9 i8 d* Q
2 ?' M( Z6 m$ s) R- If A is a scalar, cov(A) returns 0. If A is an empty array, cov(A)returns NaN.
, a2 t0 H/ @( I# A$ F1 C% f5 V 0 y% g: g8 M& O n3 {) }1 i
- 如果A是标量,则cov(A)返回0.如果A是空数组,则cov(A)返回NaN。
( m; i% ^% f8 | U : y" `) a( H4 `+ Y% _$ ^4 ]8 f
(你看看人家考虑的多周全!)
8 r- k8 n( m2 r' i9 n6 c) q. a S* s! P
' g+ f( Y# j: m2 I7 x8 V; Z
C = cov(A,B)
}/ _9 v G4 B$ v3 @. a
* {- I9 h z8 n* ]) QC = cov(A,B) returns the covariance between two random variables A and B.
' d5 m, i5 b1 X4 M5 s$ T
' j2 s3 L/ N8 }! `; _; v1 L; CC = cov(A,B) 返回两个随机变量A和B之间协方差。; x' V$ S3 {: M/ V* `' f- D
( l8 a1 d, A0 w0 E9 w
- If A and B are vectors of observations with equal length, cov(A,B) is the 2-by-2 covariance matrix.
9 i+ F5 y# ^8 j: f' C 9 C' L. O; N6 P! h& C" F
- 如果A和B是同等长度的观测向量,那么C是一个2*2的协方差矩阵。
+ W+ c2 j' z0 D, t5 b9 V 1 @0 X* o4 m2 ^7 o; Q
- 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.
8 [- P4 \; z% P- B
/ f5 G+ ?0 @6 L! }) e) {- 如果A和B是观察矩阵,则cov(A,B)将A和B视为向量,并且等同于cov(A(
,B(:))。 A和B必须具有相同的大小。
. Y: A" L$ M$ r* ^# T
5 m- y# C P1 G+ A6 S- X, R7 J- 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.( ^; s5 J4 F, K" ]
& s; p* K! |! D1 P' ^" W
- 如果A和B是标量,则cov(A,B)返回2乘2的零块。 如果A和B是空数组,则cov(A,B)返回2乘2的NaN块。7 N4 I4 b. i1 Q
0 c! I! ?: }8 `
0 \+ R: a/ T8 }, V3 v- Q9 @/ [2 F* D. X
C = cov(___,w)3 e( [' u: B1 n/ V# d
U; v8 I" p3 T, M5 X- ~4 WC = 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 e2 a. S* [ k
0 |. r, U3 u7 x& h! `C = cov(___,w)指定任何先前语法的归一化权重。 当w = 0(默认值)时,C由观测数-1归一化。 当w = 1时,它通过观察次数归一化。
, h. }1 `+ r3 B3 J8 R; X8 B& }5 f5 d* c) U
4 G- K# M& i& f L; L6 G5 c" R
C = cov(___,nanflag)* ^$ ]# X0 e+ H3 l7 `- G3 U
( ~7 H: n, `9 _+ C4 F! kC = 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.
* ^; x5 Z; R3 B' o/ V/ m' O% p8 F1 u& |' ~9 f& f! x, o
C = cov(___,nanflag)指定从任何先前语法的计算中省略NaN值的条件。 例如,cov(A,'omitrows')将省略具有一个或多个NaN元素的A的任何行。
9 V/ u3 s& s' {, t' P
8 @7 D$ q! Q( q( a: [% ^1 j: Q) i
, V5 Q' O9 P$ k9 [) Y% n示例) ~. ]6 `) J2 r' j/ `2 k/ `
# v& n" Y7 r4 s& H
下面举例说明重要的语法格式:$ ~- |/ @* |4 y7 E) [" W
, q' H/ {% r' B2 D3 L2 T" ?! _
C = cov(A) 举例(矩阵的协方差)
; k* U6 G. M& W% @! |9 d
1 X2 b- y( K; n6 h! e0 FCreate a 3-by-4 matrix and compute its covariance4 N- B: c" J) B4 [
* K0 ~% j2 n, a, C: |! y
- A = [5 0 3 7; 1 -5 7 3; 4 9 8 10];
- C = cov(A)
0 c4 |; d8 z: [, |: _7 ^ ! u4 D0 O; D2 T+ e1 E0 }
: Q+ d8 Z; e( p- W* r
/ f$ {8 I2 `# s: H B* a# H$ E% A5 v) P% n
- C = 4×4
( l* L' n' ?+ S/ D# j& u7 u2 g- 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
- 2 x M/ s- H# `$ v+ c* V
$ k+ @9 B0 t: o9 `1 L* T- T4 H% ?
' f- K o g; L7 u4 ]4 }' E
! _1 V1 U- d; a( f+ x1 c/ b9 V( {0 s5 e3 {" h
Since the number of columns of A is 4, the result is a 4-by-4 matrix.' {. p% |, Z1 t$ N" s F
0 g$ }. \9 |4 z
由于矩阵A有4列,表示有4个随机变量,那么协方差矩阵是4*4的。
7 z N4 Y5 r8 Y4 u' L) B. _# ?
$ n: ^, ^: K3 v; |% C' |6 {( Y! \7 p4 e2 M0 ~
cov(A,B) 举例之两个向量之间的协方差; h2 S8 X% R% n( a' |; M+ I, L
9 k+ d! Q" V% _$ B
1. Create two vectors and compute their 2-by-2 covariance matrix.3 I3 O5 ~2 ]% Q- N
# B6 w& [4 P( O+ G3 e
- A = [3 6 4];
- B = [7 12 -9];
- cov(A,B)
% E6 O; R [' P8 A
0 s& p% K* m' N1 ?/ }9 L7 v' Z; n& ]4 Z& S9 I% r* M$ V
0 W2 F* |1 u6 ~9 @! Y
* H4 @( n: R* O$ v- ans = 2×2
- & _4 H2 z) t# z% a( A( s4 d: b
- 2.3333 6.8333
- 6.8333 120.3333
6 N5 A1 j% F( G0 ^
# Y3 F, E f1 ~- Z: G( h) L- U
" l2 L) @* o, f2 A7 ~; O/ B9 Q7 U$ r, n/ M8 ?
" b5 W( y7 a( _; ?' U6 z7 u3 c
cov(A,B) 举例之两个矩阵之间的协方差! V+ \' l1 T% T$ i( @
* _1 s* G2 l0 g% r U2. Create two matrices of the same size and compute their 2-by-2 covariance.6 L5 f5 M7 }0 j4 F0 I
% L6 N8 D% @* Y6 L+ L- S$ ^* y
- A = [2 0 -9; 3 4 1];
- B = [5 2 6; -4 4 9];
- cov(A,B)4 f6 H! {) Q- Y6 T! X+ M: u9 k
, f# u$ x* s- m# r; U w
9 [2 W1 O( e4 d9 R# o; a/ h2 C( e+ ]+ {% t4 ?) f# r/ k
4 }+ h) g/ l( p& e, p4 O( p
- ans = 2×2
- $ E+ R. w! A9 R5 J+ f0 U% ~
- 22.1667 -6.9333
- -6.9333 19.4667
: |2 |$ F/ f- G' z- b! o) X$ s1 V " f/ q% R& r" D# f2 a- [7 k( A
+ E% J0 K) |5 ~1 j2 ]
K; D [6 g/ Y4 k( V% h! Y/ S* s1 c! P% p
这相当于求A(:)和B(:)的协方差,如下验证下:
' l, x0 e- t0 u' B( T7 ~4 Z* z% \9 A% M
/ g3 e2 |' y$ ?( b* J; _% O
6 `, ]8 K E, N
; s5 s$ E: E% o& [5 ?
; N+ `0 ^! i8 D& K+ L9 w) \% `# A
: v' |, [5 l! f# V" J( |4 {% a% }* O/ g, j/ M0 G
对比下cov(A,B)发现是一致的:. q; x& Y* L. e+ C/ V
6 D8 D$ P8 p( Y2 J
5 \* G+ s9 z% s2 Z1 E1 M! [' x* E( D! |* a7 e7 _' F* _4 X S7 A0 }
. Y# q/ P5 V5 o4 \8 ]' D
Specify Normalization Weight7 i5 |* h! c& @! l9 ^
. I% L1 g. V4 b5 L1 A0 \
创建一个矩阵并计算由行数归一化的协方差。
& ]. J- k) H' U* V
1 a/ x, y" i- d, C# u C7 A& e& {- A = [1 3 -7; 3 9 2; -5 4 6];
- C = cov(A,1), }- k' B$ O' L# E" @3 j8 {2 M. g
8 _* b0 T3 y5 F& f5 h. Z5 i. s
, h3 z2 ]. l7 u3 {/ g
- C = 3×3
- S* s2 |* b( q$ A- q1 L% e( W
- 11.5556 5.1111 -10.2222
- 5.1111 6.8889 5.2222
- -10.2222 5.2222 29.5556* j0 Z) m9 I- C, R
x& b1 h+ \" Z
+ f* [1 J1 T' A- e. g9 q
: D7 z' h- k& C
7 k3 Z3 ]/ o) h我觉得还是有必要比较下不归一化的情况:
( L5 N2 Z7 b6 j1 q6 U1 t
M' o, e/ n$ G9 O' B) h>> A = [1 3 -7; 3 9 2; -5 4 6]
! }) A7 L/ t- t9 d4 G+ r6 w* A6 X9 V+ T0 M8 u& v5 A3 }5 y
A =
V* k) j/ _6 @8 L$ h
! L9 |# V+ q% P0 P: { 1 3 -7
9 Z7 Z9 d- {) n$ e* t 3 9 20 e1 L+ S9 U( {9 n' p
-5 4 6
, z1 \: |8 q: H* K7 d& {
' `& {8 @& I, v* ]. E, u>> C = cov(A,1)3 i) ?; @, N! ]" A1 ~4 a4 M
5 B. [' ^; R% U) M4 pC = K0 C# z$ h1 I% _
$ i$ A2 t! X. D# m9 A6 F
11.5556 5.1111 -10.2222
7 @' c0 ^4 a" C# H2 X 5.1111 6.8889 5.2222) j; `* Q9 v5 z0 I* u4 E3 f2 P; r
-10.2222 5.2222 29.55567 _/ {! I \4 e
8 ^0 d, Z. E" S; z& Q* J* h>> C = cov(A)8 P! d4 c* j* U" b8 ]9 T
7 I* }% k& ~) R, R- ^2 PC =
% z+ H# k9 L$ w, c& h: J& d3 ~. q+ T
17.3333 7.6667 -15.3333
( ^$ u% i# c$ N& c. j 7.6667 10.3333 7.8333
" v$ }' F4 m) X! p -15.3333 7.8333 44.3333! Z7 q4 n) G, y; h% I5 Y
+ S5 ? }* s4 E) m3 j! T& R* q" G' n9 D9 ?# V5 F# G: p! A4 P
Covariance Excluding NaN/ j- ~, i% I& c5 k7 ]' j( K, {
' x) ?! w% p1 ~' T5 \& e7 [
创建矩阵并计算其协方差,排除包含NaN值的任何行。- H0 K# M# r4 o6 o6 y' D7 |
; [, c, w8 A a0 I5 e: O/ Y
A = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]
. n% H' a5 e# f; `6 W& I# P, C
# j: e9 L+ ?1 v4 m) |- A = 3×3
- + l, }* q7 b2 h# r( X7 T
- 1.7700 -0.0050 3.9800
- NaN -2.9500 NaN
- 2.5400 0.1900 1.0100
- 0 K/ L5 z) w1 N7 J7 Y
" A! F2 n \2 I6 E% @. x+ k, ^
' u, R+ j9 j3 G' o$ ^) g% P1 s3 O
C = cov(A,'omitrows')- P P/ Q; N! e. J o
" {' S- Z B! n7 \8 R8 ~. F& |
- C = 3×3
- , O0 ?. D6 k1 C7 {% D- l* `
- 0.2964 0.0751 -1.1435
- 0.0751 0.0190 -0.2896
- -1.1435 -0.2896 4.4104
$ s1 P; }1 q5 ?/ R- H( Q* k: L4 _1 `5 W5 |6 f* ~& x- ], i% p
# k# e* u$ n; v/ Z, g# X% i9 H( C5 [
! K Y( v" U+ F" l
$ g0 K& X, e/ K8 h/ E3 ~
% b5 J' S; F0 T1 Z" @2 W& L. v9 Y; s- ~8 L5 k. U
: N5 ~: [/ J1 R* d. R" G( n) m
1 D( T Q# }6 L x7 b( c
7 X3 z* [! q: c2 m$ G% A: r$ t' m5 n7 { X
- ?$ [. }; K# V# U- p
' L& Q& P& T, w3 }7 f2 `
9 A3 Y4 j( r9 d2 |! x$ b |
|