covariance matrix

article/2025/10/29 15:41:12

协方差的定义

 

对于一般的分布,直接代入E(X)之类的就可以计算出来了,但真给你一个具体数值的分布,要计算协方差矩阵,根据这个公式来计算,还真不容易反应过来。这里用一个例子说明协方差矩阵是怎么计算出来的吧。

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

 

X表示x轴可能出现的数,Y表示y轴可能出现的。注意这里是关键,给定了4个样本,每个样本都是二维的,所以只可能有XY两种维度。所以

 

用中文来描述,就是:

协方差(i,j)=(第i列的所有元素-i列的均值)*(第j列的所有元素-j列的均值)

这里只有X,Y两列,所以得到的协方差矩阵是2x2的矩阵,下面分别求出每一个元素:

 

       所以,按照定义,给定的4个二维样本的协方差矩阵为:

 

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

下面在给出一个43样本的实例,注意4维样本与符号X,Y就没有关系了,X,Y表示两维的,4维就直接套用计算公式,不用X,Y那么具有迷惑性的表达了。

 

(3)matlab计算验证

Z=[1 2 3 4;3 4 1 2;2 3 1 4]

cov(Z)

ans =

      1.0000    1.0000   -1.0000   -1.0000

     1.0000    1.0000   -1.0000   -1.0000

      -1.0000   -1.0000    1.3333    0.6667

      -1.0000   -1.0000    0.6667    1.3333

       可知该计算方法是正确的。我们还可以看出,协方差矩阵都是方阵,它的维度与样本维度有关(相等)。参考2中还给出了计算协方差矩阵的源代码,非常简洁易懂,在此感谢一下!


http://chatgpt.dhexx.cn/article/bjQBnoP8.shtml

相关文章

经典排序算法——堆排序

对于一个int数组,请编写一个堆排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] class HeapSort { public:int* heapSort(int* A, int n) {BuildMaxHeap(…

堆排序算法原理及c++实现

文章目录 准备知识MAX-HEAPIFY过程建堆堆排序算法总结 准备知识 堆的结构可以分为最大堆和最小堆,是一个完全二叉树,而堆排序是根据堆的这种数据结构设计的一种排序。 所谓完全二叉树即叶节点只能出现在最下层和次下层,并且最下面一层的结点…

堆排序算法设计与分析

堆排序(HeapSort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。堆分为大根堆和小根堆,是完全二叉树。大根堆要求父结点的值大于或等于子结点的值,小根堆相反。根据大根堆的性质,我们可以知道最大值一…

堆排序算法实现

堆排序:结构逻辑上是完全二叉树,但是可以使用顺序存储来实现 一些二叉树的区别: 二叉树:度数最大为2并且每个子树也是二叉树 满二叉树:每层节点都是满的,没有空缺,也就是,叶子节点只能出现在最后一层 完全二叉树:限制条件比满二叉树弱化,只需要前k-1层是满二叉树结构,最后…

数据结构之堆排序算法详解+C语言实现

堆   堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 堆排序   堆排序是利用堆这种数据结构而设计的一种排序算法&…

堆排序算法原理及实现

堆排序是排序中一种比较重要的算法,和快速排序一样,其复杂度也是O(nlogn);同时也是一种原地排序算法:在任何时候,数组中只有常数个元素存储在输入数组以外。堆这种数据结构是处理海量数据比较常见的结构,海…

堆排序算法Java

基本原理 1):将带排序的序列构造成一个大顶堆,根据大顶堆的性质,当前堆的根节点(堆顶)就是序列中最大的元素 2):将堆顶元素和最后一个元素交换,然后将剩下的节点重新构造成一个大顶堆; 3):重复步骤2 小知识…

堆排序算法详细分析

一、堆相关概念 1.堆 堆是完全二叉树,即除最后一层外,其它层都是满的,且最后一层从左到右依次都有元素。如下图所示。 堆是用数组来实现的,图中下标就为数组的下标,其对应数组[5, 1, 7, 2, 8, 6, 3, 9, 4]&#xf…

数据结构——堆排序(算法)

基本介绍 1)、堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最好、最坏、平均时间复杂度均为O(nlogn),它也是不稳定排序。2)、堆是具有以下性质的完全二叉树:每个节点的值都…

C++:堆排序算法详解

图解排序算法(三)之堆排序 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有…

排序算法:堆排序算法实现及分析

堆排序介绍 堆排序(Heap Sort)就来利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构成一个大顶堆。此时,整个序列的最大值就是堆顶的根结点。将它移走(其实就是将其与堆…

堆排序算法 总结

最近面试,老是被问到堆排序算法。 回答时老是感觉思路不清楚,现在总结一下,把思路弄清楚的。 1.堆排序是利用堆的特性对记录序列进行排序的一种排序方法。 好的那么堆得特性是什么呢? 堆得定义: 堆是满足下列性质的数…

Java实现堆排序算法

堆排序是计算机编程中一种流行且高效的排序算法。学习如何编写堆排序算法需要了解两种类型的数据结构-数组和树。 我们要排序的初始数字集存储在数组中,例如[10, 3, 76, 34, 23, 32],排序后,我们得到一个排序后的数组[3,10,23,32,34,76] 堆排…

精通八大排序算法系列:二、堆排序算法

精通八大排序算法系列:二、堆排序算法 作者:July 、二零一一年二月二十日本文参考:Introduction To Algorithms,second edition。------------------- 此精通排序算法系列,前一节,已讲过了一、快速排序算法&#xff0c…

堆排序算法详解

一、堆排序算法原理和动态图解 将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就…

【堆排序算法】(C语言实现)

堆排序 一.堆排序1.堆的概念及性质1.1堆的概念1.2堆的性质 二.向下调整和向上调整两大算法1. 向下调整算法2.1 向下调整算法基本思路 2. 向上调整算法2.2 向上调整的基本思路 三.堆的实现(小堆)1.头文件包含2. 接口实现 四.任意树调整为堆(小…

堆排序算法

堆排序 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 基本思想 利用大顶堆…

3.图解排序算法(三)之堆排序

作者: dreamcatcher-cx 出处: http://www.cnblogs.com/chengxiao/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在页面明显位置给出原文链接。 原文链接:https://www.cnblogs.…

排序算法:堆排序

相关博客: 排序算法:冒泡排序、插入排序、选择排序、希尔排序 排序算法:归并排序、快速排序 排序算法:桶排序、计数排序、基数排序 排序算法:堆排序 十大排序算法小结 一、堆: 1、什么是堆&#xff1…

排序算法 —— 堆排序(图文超详细)

文章目录 堆排序1. 排序思路2. 如何建成大根堆2.1. 将待排序的数据看成一个完全二叉树。2.2. 建堆思想2.3. 建堆步骤2.3.1.先将最后一棵子树建成大根堆2.3.2.将其余子树建成大根堆2.3.3. 代码分析 3 如何实现堆排序3.1 排序思路3.2 代码实现的思路3.3 代码分析3.4 排序过程 4. …