精华内容
下载资源
问答
  • 一、协方差矩阵的定义及其计算公式  协方差矩阵在机器学习中经常用到,查看wiki:http://zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5 可知协方差矩阵的具体计算公式如下: 在统计学与...

    一、协方差矩阵的定义及其计算公式

      协方差矩阵在机器学习中经常用到,查看wiki:http://zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5 可知协方差矩阵的具体计算公式如下:

    统计学概率论中,协方差矩阵是一个矩阵,其每个元素是各个向量元素之间的协方差。这是从标量随机变量到高维度随机向量的自然推广。

    假设X是以n个标量随机变量组成的列向量

    X = \begin{bmatrix}X_1 \\  \vdots \\ X_n \end{bmatrix}

    并且\mu_i是其第i个元素的期望值,即, \mu_i = \mathrm{E}(X_i)。协方差矩阵被定义的第i,j项是如下:

    \Sigma_{ij} = \mathrm{cov}(X_i, X_j) = \mathrm{E}\begin{bmatrix} (X_i - \mu_i)(X_j - \mu_j) \end{bmatrix}

    即:

    \Sigma=\mathrm{E} \left[  \left(  \textbf{X} - \mathrm{E}[\textbf{X}]  \right)  \left(  \textbf{X} - \mathrm{E}[\textbf{X}]  \right)^\top \right]
    = \begin{bmatrix}  \mathrm{E}[(X_1 - \mu_1)(X_1 - \mu_1)] & \mathrm{E}[(X_1 - \mu_1)(X_2 - \mu_2)] & \cdots & \mathrm{E}[(X_1 - \mu_1)(X_n - \mu_n)] \\ \\  \mathrm{E}[(X_2 - \mu_2)(X_1 - \mu_1)] & \mathrm{E}[(X_2 - \mu_2)(X_2 - \mu_2)] & \cdots & \mathrm{E}[(X_2 - \mu_2)(X_n - \mu_n)] \\ \\  \vdots & \vdots & \ddots & \vdots \\ \\  \mathrm{E}[(X_n - \mu_n)(X_1 - \mu_1)] & \mathrm{E}[(X_n - \mu_n)(X_2 - \mu_2)] & \cdots & \mathrm{E}[(X_n - \mu_n)(X_n - \mu_n)] \end{bmatrix}

    矩阵中的第(i,j)个元素是X_iX_j的协方差。这个概念是对于标量随机变量方差的一般化推广。

     

    二、理解的关键

      1、理解的关键是两个随机变量x1,x2的协方差如何计算,有cov(x1,x2) = E{[(x1-E(x1)][x2-E(x2)]},对于离散的随机变量x1,x2,协方差矩阵描述的x1,x2相互联系的偏差,所以两个随机变量是一一对应的,即假设有m个样本值,则分别为(x11,x21),(x12,x22),(x13,x23),...(x1m,x2m),这便可以写成一个2*m的矩阵的形式。则x1,x2协方差表示的是两个随机变量对应的样本值分别都减去各自均值后的乘积的均值(因为无偏性估计的缘故,除以的不是m而是m-1);

      2、所以对于一个n*m的样本矩阵,得出的协方差矩阵C是n*n的矩阵,协方差矩阵每个元素Cij表示的随机变量xi,xj的协方差。所以协方差矩阵是一个对称矩阵,且对角线上元素为每个随机变量的方差(如果是信号的话可以看成是能量);如果各个变量相关性很小的话,互相的协方差接近0,即协方差矩阵基本上为对角阵;

      3、可以证明,协方差矩阵是非负定矩阵,这可以有非负定矩阵的定义得到;(参考北京大学出版社《多元统计分析》)

      4、同样地,为了表示各个随机变量相关性到底有多大,可以引入相关性矩阵。

    三、matlab计算公式:

      matlab中有一个计算协方差矩阵的函数cov,从其help中可知,该函数的输入为一个m*n的矩阵X,其定义和wiki上的定义相反,每一行表示一个随机向量,即有n个随机变量。如果将一个随机向量看成一个模式的特征向量的话,那么该矩阵表示该模式的一个特征向量用n个特征表示,共有m个特征向量,即有m个样本。

    根据matlab中的help文档的cov函数介绍写一个类似的函数:

     1 function cov = covariance(X)
     2 % 由随机变量样本矩阵计算协方差矩阵
     3 %---- 输入:    
     4 % X:     M*N的样本矩阵,其中一行表示一个随机向量样本
     5 %       共有M个随机样本
     6 %---- 输出:
     7 % cov:   N*N的协方差矩阵,表示各个随机变量的协方差
     8 %---- 计算方法
     9 % 随机变量均值用样本均值统计量估计:X_mean = 1/N*ΣXi;
    10 % 随机变量方差用样本方差统计量估计:S = 1/(N-1)*Σ(Xi-X_mean)^2
    11 % 随机变量协方差可以用如下统计量估计:C = 1/(N-1)*Σ(Xi-X_mean)(Yi-Y_mean)
    12 
    13 % 各个样本减去其平均值
    14 % X = bsxfun(@minus,X,mean(X));
    15 %或者:
    16 %X = X-repmat(mean(X),size(X,1),1);
    17 cov = 1/(size(X,1)-1)*X'*X;

     

    转载于:https://www.cnblogs.com/lyfruit/archive/2012/12/23/2830298.html

    展开全文
  • Matlab-计算协方差矩阵函数

    千次阅读 2018-09-07 15:02:32
    一、源码 function [ COVMAT ] = covarianceMatrix( ...% 这是一个计算协方差矩阵函数 % inputData 输入数据 % 每一行为一个维度 % 每一列为一个样本 %获得输入数据维度 [m,n] = size(inputData); %创建协...

    一、源码

    function [ COVMAT ] = covarianceMatrix( inputData )
    %   covarianceMatrix( inputData )
    %   这是一个计算协方差矩阵的函数
    %   inputData   输入数据
    %   每一行为一个维度
    %   每一列为一个样本
    
    
    %获得输入数据维度
    [m,n] = size(inputData);
    %创建协方差矩阵
    COVMAT = zeros(m,m);
    %取得每维数据平均值
    E = zeros(m,1);
    for i = 1:m
        E(i) = mean(inputData(i,:));
    end
    %计算协方差
    for i = 1:m
        for j = 1:m
           COVMAT(i,j) = ((inputData(i,:)-E(i))*(inputData(j,:)-E(j))')./(n-1);
        end
    end

    二、测试数据

    数据样本:

    MySample = [40 45 6 45 31 4 13 27 47 48;7 48 47 24 40 7 21 45 39 47;32 1 42 46 33 37 37 19 32 8]

    运算结果:

    >> covarianceMatrix(MySample)

    ans =

      301.1556   78.0000 -120.2444
       78.0000  268.9444 -126.9444
     -120.2444 -126.9444  216.0111

     

    参考:http://www.cnblogs.com/chaosimple/p/3182157.html

    展开全文
  • 运行版本:1.MatlabR2015b windows64Bit2.https://octave-online.net/3.http://www.compileonline.com/execute_matlab_online.php代码:%自编协方差矩阵计算法结果一致,但与matlab自带的cov函数不一致% Rxx.mclose ...

    目前还弄不清是什么原因,有多大影响,只知道存在这个问题。

    运行版本:

    1.MatlabR2015b windows64Bit

    2.https://octave-online.net/

    3.http://www.compileonline.com/execute_matlab_online.php

    代码:

    %自编协方差矩阵计算法结果一致,但与matlab自带的cov函数不一致

    % Rxx.m

    close all;

    clear;

    clc;

    rng(‘default‘);

    rng(0);

    A = randn(10,4);

    [r,c]=size(A);

    % method 1

    Rxx1=A‘*A/r;

    %method2

    for n=1:r

    rx2_0(:,:,n)=A(n,:)‘*A(n,:);

    end

    Rxx2=sum(rx2_0,3)/r;

    % method 3

    Rxx3=cov(A);

    fprintf(‘err1=%f\n‘,sumsqr(Rxx1-Rxx2));

    fprintf(‘err2=%f\n‘,sumsqr(Rxx1-Rxx3));

    fprintf(‘err3=%f\n‘,sumsqr(Rxx2-Rxx3));

    结果

    err1接近于0,err2,err3相等且等于某个数,对比了一下对应的矩阵数据,确实有差异。

    Todo~.~

    原文:https://www.cnblogs.com/alimy/p/9758643.html

    展开全文
  • 协方差函数(Autocovariance function)自协方差函数是描述随机信号X(t)在任意两个不同时刻t1,t2,的取值之间的二阶混合中心矩,用来描述X(t)在两个时刻取值的起伏变化(相对与均值)的相关程度,也称为中心化的自...

    1.自相关函数(Autocorrelation function)

    自相关函数是描述随机信号X(t)在任意两个不同时刻t1,t2,的取值之间的相关程度

    0818b9ca8b590ca3270a3433284dd417.png

    2. 自协方差函数(Autocovariance function)

    自协方差函数是描述随机信号X(t)在任意两个不同时刻t1,t2,的取值之间的二阶混合中心矩,用来描述X(t)在两个时刻取值的起伏变化(相对与均值)的相关程度,也称为中心化的自相关函数。

    0818b9ca8b590ca3270a3433284dd417.png

    0818b9ca8b590ca3270a3433284dd417.png时, 

    0818b9ca8b590ca3270a3433284dd417.png

    显然,自协方差函数和自相关函数描述的特性基本相同。

    3. 协方差矩阵

    0818b9ca8b590ca3270a3433284dd417.png

    记住,X、Y是一个列向量,它表示了每种情况下每个样本可能出现的数。比如给定

    0818b9ca8b590ca3270a3433284dd417.png

    由于数据是二维的,所以协方差矩阵是一个2*2的矩阵,矩阵的每个元素为:元素(i,j) = (第 i 维所有元素 - 第 i 维的均值) * (第 j 维所有元素 - 第 j 维的均值) 。

    其中「*」代表向量内积符号,即两个向量求内积,对应元素相乘之后再累加。

    我们首先列出第一维:D1: (1,3,4,5) 均值:3.25

    D2: (2,6,2,2) 均值:3

    下面计算协方差矩阵第(1,2)个元素:

    元素(1,2)=(1-3.25,3-3.25,4-3.25,5-3.25)*(2-3,6-3,2-3,2-3)=-1

    类似的,我们可以把2*2个元素都计算出来:

    0818b9ca8b590ca3270a3433284dd417.png

    这个题目的最终结果就是:

    用matlab计算这个例子

    z=[1,2;3,6;4,2;5,2]

    cov(z)

    ans =

    2.9167   -0.3333

    -0.3333    4.0000

    可以看出,matlab计算协方差过程中还将元素统一缩小了3倍。所以,协方差的matlab计算公式为:

    协方差(i,j)=(第i列所有元素-第i列均值)*(第j列所有元素-第j列均值)/(样本数-1)

    参考:

    [1] http://en.wikipedia.org/wiki/Covariance_matrix

    [2] http://www.cnblogs.com/cvlabs/archive/2010/05/08/1730319.html

    [3]http://blog.csdn.net/ybdesire/article/details/6270328

    [4] http://202.117.122.42:9001/xhxt/xhyxt/xuexi/chart9/c_9_2_3_001.htm

    展开全文
  • matlab协方差矩阵>> A=[0,0,0;2,0,2;]A =0 0 02 0 2>> v = diag(cov(A))'v =2 0 2help里面的cov 函数,你自己看一下吧!MATLAB怎么计算协方差>> x=rand(1,5);>> y=2*rand(1,5);>> ...
  • matlab协方差函数cov

    2015-05-21 19:25:00
    Matlab中cov函数详细解读 1、向量的方差与协方差矩阵 cov(x) 求向量x的方差。 cov(x)为一个数值,数值大小计算公式为S(x)。 cov(x,y) 求向量x与y的协方差矩阵。 cov(x,y)为2*2矩阵, [S(x) C(x,y); ...
  • 介绍了Matlab 中如何使用 mean 、var 、std、cov 函数
  • 目前还弄不清是什么原因,有多大影响,只知道存在这个问题。 运行版本: 1.MatlabR2015b windows64Bit ... 3....%自编协方差矩阵计算法结果一致,但与matlab自带的cov函数不一致 % ...
  • Covariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了。至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的基础知识点。 本文内容参考自...
  • MATLAB中jacobian是用来计算Jacobi矩阵函数 syms r l f x=r*cos(l)*cos(f); y=r*cos(l)*sin(f); z=r*sin(l); J=jacobian([x;y;z],[r l f]) 结果: J = [ cos(l)*cos(f), -r*sin(l)*cos(f), -r*cos(l)*sin(f...
  • 本博文源于matlab基础,主要对协方差矩阵如何生成进行讲解。该函数使用randn cov使用 randn(m,n) % 生成一个m*n标准正态分布 矩阵 cov(m)% 求出m的协方差矩阵 例子:求出5*6阶服从正态分布随机数的协方差矩阵 >&...
  • 最近在论文里看到很多协方差矩阵的表示方式为 Rx=E{XXT} ,但是我们经常用的都时 cov(X)来计算协方差。 其中:X为一维随机序列或者信号的采样, XT 代表 X 的转置序列 设:x=[10 20 32 44 5 7 2 56 7 2]'; 注意有...
  • 浅谈协方差矩阵

    2021-04-14 20:13:50
    三、协方差矩阵 ...以下的演示将使用Matlab,为了说明计算原理,不直接调用Matlab的cov函数: 首先,随机生成一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。 根据公式,计算协方差
  • matlab中的协方差函数

    万次阅读 2017-07-29 14:43:40
    协方差:引入协方差的公式 说明:这里有n个样本,计算时以n-1代替n是以较小的样本集逼近总体的标准差,即统计上的“无偏估计”,matlab中方...注意:计算样本矩阵的协方差矩阵时牢记是计算不同维度间的协方差,如样
  • 这几天在用matlab计算PCA的过程中的协方差矩阵的特征值,然后对特征值进行排序,每次用sort函数排完序之后,发现索引都是从大到小,换用不同的数据集之后依然是这样,但是eig函数并没有将特征值排序的功能,然后用...
  • 1. 已知信号矩阵sigmat, 协方差矩阵(covariance matrix) 可以用matlab函数cov(sigmat)求得; 2. 相关矩阵跟相关系数矩阵是同一个矩阵,相关系数即为相关矩阵的矩阵元,已知协方差矩阵可以求相关矩阵:corrcov(covmat...
  • 共回答了23个问题采纳率:95.7%Matlab函数:mean>>X=[1,2,3]>>mean(X)=2如果X是一个矩阵,则其均值是一个向量组.mean(X,1)为列向量的均值,mean(X,2)为行向量的均值.>>X=[1 2 34 5 6]>>mean(X...
  • Matlab求方差,均值,均方差,协方差函数   1、 均值 数学定义:    Matlab函数:mean >>X=[1,2,3] >>mean(X)=2   如果X是一个矩阵,则其均值是一个向量组。mean(X,1)为列...
  • OpenCV中协方差矩阵的计算

    千次阅读 2010-11-02 18:56:00
    下面给出了OpenCV中协方差矩阵的计算方法,其输入输出特性与Matlab中的cov函数相同,但是可能由于OpenCV程序本身的问题,自带的归一化功能是按照除以矩阵行数(R)来计算的,但实际上应该除以(R-1)进行归一化,...
  • 提供了CMAES的详细matlab代码,并且包含测试函数,希望对做优化的同学有一定帮助
  • 1、均值数学定义:Matlab函数:mean>>X=[1,2,3]>>mean(X)=2如果X是一个矩阵,则其均值是一个向量组。mean(X,1)为列向量的均值,mean(X,2)为行向量的均值。>>X=[1 2 34 5 6]>>mean(X,1)=[2.5...
  • 1、 均值数学定义:Matlab函数:mean>>X=[1,2,3]>>mean(X)=2如果X是一个矩阵,则其均值是一个向量组。mean(X,1)为列向量的均值,mean(X,2)为行向量的均值。>>X=[1 2 34 5 6]>>mean(X,1)=...
  • Matlab函数:mean >>X=[1,2,3] >>mean(X)=2 如果X是一个矩阵,则其均值是一个向量组。mean(X,1)为列向量的均值,mean(X,2)为行向量的均值。 >>X=[1 2 3 4 5 6] >>mean(X,1)=[2.5, 3.5...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 138
精华内容 55
关键字:

matlab协方差矩阵函数

matlab 订阅