📜  如何在 MATLAB 中计算协方差

📅  最后修改于: 2022-05-13 01:54:25.671000             🧑  作者: Mango

如何在 MATLAB 中计算协方差

协方差是衡量两个或多个随机变量之间相关强度的指标。两个随机变量 X 和 Y 的协方差可以定义为:

{\displaystyle \operatorname {cov} (X,Y)={\frac {1}{n}}\sum _{i=1}^{n}(x_{i}-E(X))(y_{i}-E(Y))}

其中 E(X) 和 E(Y) 分别是随机变量 X 和 Y 的期望或均值。

两个随机变量 A 和 B 的协方差矩阵定义为

{\displaystyle \mathbf {c } ={\begin{bmatrix}\operatorname {cov(A,A)}&\operatorname {cov(A,B)}\\\operatorname {cov(B,A) }&\operatorname {cov(B,B) }\end{bmatrix}}}



MATLAB 语言允许用户使用 cov() 方法计算随机变量的协方差。 cov() 方法的不同语法是:

  1. C = cov(A)
  2. C = cov(A,B)
  3. C = cov(___,w)
  4. C = cov(___,nanflag)

C = cov(A)

  • 它返回数组 A 的协方差。
  • 如果 A 是标量,则返回 0。
  • 如果 A 是向量,则返回向量 A 的方差。

{\displaystyle \operatorname {Var} (X)={\frac {1}{n}}\sum _{i=1}^{n}(x_{i}-\mu )^{2}} \\where \; \mu \; is \; the \; mean\;.

  • 如果 A 是矩阵,那么它将每一列视为一个随机变量并返回矩阵 A 的协方差矩阵。

注意: disp (x) 显示变量 X 的值,不打印变量名。显示变量的另一种方法是键入其名称,该名称在值前显示前导“X =”。如果变量包含空数组,则 disp 返回而不显示任何内容。

示例 1:

Matlab
% Input vector
A = [1 3 4];
disp("Vector :");
disp(A);
 
% Variance of vector A
C = cov(A);
disp("Variance :");
disp(C);


Matlab
% Input vector
A = [2 7 1;
     3 5 1
     4 1 2];
disp("Matrix :");
disp(A);
 
% Covariance of matrix A
C = cov(A);
disp("Covariance matrix :");
disp(C);


Matlab
% Input vector
A = [3 5 7];
B = [-1 3 9];
disp("Vector A:");
disp(A);
disp("Vector B:");
disp(B);
 
% Covariance of vectors A,B
C = cov(A,B);
disp("Covariance matrix :");
disp(C);


Matlab
% Input vector
A = [2 4 6;
     3 5 7
     8 10 12];
disp("Matrix :");
disp(A);
 
% Variance of matrix A
C = cov(A,1);
disp("Variance matrix:");
disp(C);


Matlab
% Input vector
A = [3.2 -1.005 2.98;
     NaN  -6.75  NaN;
     5.37  0.19  1]
disp("Matrix :");
disp(A);
 
% Variance of matrix A
C = cov(A,'includenan');
disp("Variance matrix including NaN:");
disp(C);
 
 
% Variance of matrix A
C = cov(A,'omitrows');
disp("Variance matrix omitting NaN:");
disp(C);



输出 :



示例 2:

MATLAB

% Input vector
A = [2 7 1;
     3 5 1
     4 1 2];
disp("Matrix :");
disp(A);
 
% Covariance of matrix A
C = cov(A);
disp("Covariance matrix :");
disp(C);


输出 :

C = cov(A,B)

  • 它返回数组 A 和 B 的协方差矩阵。
  • 如果是 A 和 B 向量,则返回 A 和 B 的协方差矩阵。
  • 如果 A 和 B 是矩阵,则它通过扩展维度将它们视为向量本身并返回协方差矩阵。

例子:



MATLAB

% Input vector
A = [3 5 7];
B = [-1 3 9];
disp("Vector A:");
disp(A);
disp("Vector B:");
disp(B);
 
% Covariance of vectors A,B
C = cov(A,B);
disp("Covariance matrix :");
disp(C);


输出 :

C = cov(___,w)

  • 它通过将输入数组归一化为w返回输入数组的协方差。
  • 如果w = 1 ,则协方差按输入矩阵中的行数进行归一化。
  • 如果w = 0 ,则协方差按输入矩阵中的行数 – 1 进行归一化。

例子:

MATLAB



% Input vector
A = [2 4 6;
     3 5 7
     8 10 12];
disp("Matrix :");
disp(A);
 
% Variance of matrix A
C = cov(A,1);
disp("Variance matrix:");
disp(C);


输出 :

C = cov(___,nanflag)

  • 它通过考虑 nanflag 返回输入数组的协方差。
  • 如果 nanflag = 'includenan',则考虑数组中的 NaN 值。
  • 如果 nanflag = 'omitrows',那么它会忽略数组中至少有一个 NaN 值的行。

例子:

MATLAB

% Input vector
A = [3.2 -1.005 2.98;
     NaN  -6.75  NaN;
     5.37  0.19  1]
disp("Matrix :");
disp(A);
 
% Variance of matrix A
C = cov(A,'includenan');
disp("Variance matrix including NaN:");
disp(C);
 
 
% Variance of matrix A
C = cov(A,'omitrows');
disp("Variance matrix omitting NaN:");
disp(C);


输出 :