MATLAB中对于矩阵的平均数、中位数、方差、标准差、相关系数以及协方差等进行计算

2023-11-01

在数据分析和数学统计的时候,常常需要对矩阵的平均数、中位数、方差、标准差、相关系数以及协方差进行计算,这些数据可以反映一组数的整体大小、离散程度、相关性等一系列性质,这些数据是进行数据处理时的重要指标。

目录

1、平均数

2、中位数

3、标准差

4、方差

5、相关系数

6、协方差

1、平均数

平均数即是一组数据的算术平均数,一般求解的方法是将一组数据中的所有元素的值相加然后再除以所有元素的个数。但MATLAB提供了mean函数用于对于数据的平均数进行计算,调用的格式如下所示(其中V表示的是向量,A表示的是一个矩阵):

  1. mean(V):求向量X的所有数据的算术平均值。
  2. mean(A):返回一个行向量,行向量每一个的元素是矩阵A的每一列的算术平均值。
  3. mean(A,num):当num的值是1时,此时该函数的功能与mean(A)相同,返回的是行向量,行向量的每一个元素对应的是矩阵中每一列的算术平均值;当num的是2的时候,返回的是一个列向量,列向量的每一个元素对应的是矩阵A中每一行的算术平均值。
  4. mean(mean(A)):对于矩阵的整体所有元素计算平均值。

(1)下面对于一个向量进行求算术平均值的计算,例如计算向量V=[23,56,89,34,12,34,54,67]的算术平均值,利用MATLAB代码对其进行求解,代码如下所示:

V=[23,56,89,34,12,34,54,67];
B=mean(V)

结果计算可以得到:B的值为 46.125。

(2)如果对于一个矩阵的每一列的算术平均值进行计算,矩阵如下所示:

                                                         A=\begin{pmatrix} 83& 38 & 71 &58 \\ 89 & 72 & 64 & 33\\ 42 & 12 & 57 &68 \\ 34& 71 & 92 & 48 \end{pmatrix}

通过MATLAB计算每一列的算术平均值的代码如下所示:

A=[83,38,71,58;89,72,64,33;42,12,57,68;34,71,92,48];
B=mean(A)

结果返回的行向量如下所示:

B =
   62.0000   48.2500   71.0000   51.7500

或者向上面第3点所讲的一样,使用mean(A,1)同样可以得到相同的值,代码如下所示:

A=[83,38,71,58;89,72,64,33;42,12,57,68;34,71,92,48];
B=mean(A,1)

结果同样为:

B =
   62.0000   48.2500   71.0000   51.7500

(3)如果要是计算矩阵中每一行的算法平均值,可以使用mean(A,2)来得到;对于同一个矩阵,计算每一行的算法平均值代码如下所示:

A=[83,38,71,58;89,72,64,33;42,12,57,68;34,71,92,48];
B=mean(A,2)

运行的结果如下所示:

B =
   62.5000
   64.5000
   44.7500
   61.2500

(4)如果想要计算矩阵所有元素的算术平均值,可以使用mean(mean(A)),代码如下所示:

A=[83,38,71,58;89,72,64,33;42,12,57,68;34,71,92,48];
B=mean(mean(A))

最终的运行结果为58.25。

通过MATLAB的mean对于矩阵元素的平均值进行计算是比较方便的,在处理数据比较多的矩阵的时候能够发挥一定的优势。

2、中位数

中位数指的是一组数据中,根据数值大小排序之后为中间项的数,如果所有数的个数为奇数的话,那么经过排序之后中间的数就是中位数,如果所有数的个数为偶数的话,那么中位数是经过排序之后之后中间两项的平均数即为中位数。中位数在统计的时候可以反映一组数据的中等指标。MATLAB中提供了median函数对于中位数进行求解(其中V表示的是向量,A表示的是矩阵),用法如下所示:

  1. median(V):得到一组向量的中位数。
  2. median(A):返回的是行向量,其中行向量的每个值对应的是矩阵A中每一列的中位数。
  3. median(A,num):当num为1的时候,与median(A)作用相同,得到的是一个行向量,行向量的每一个是矩阵中对应列的中位数;当num为2的时候,得到的是一个列向量,列向量的每个元素是矩阵中对应行的中位数。
  4. median(median(A)):返回一个数,计算的是矩阵A的每一列的中位数组成的行向量的中位数。

(1)例如,对于本文上面的向量V进行求解中位数操作,代码如下所示:

V=[23,56,89,34,12,34,54,67];
B=median(V)

求个该向量的所有元素的中位数为44。

(2)如果使用median函数求解矩阵A中每一列的中位数的代码如下所示:

A=[83,38,71,58;89,72,64,33;42,12,57,68;34,71,92,48];
B=median(A)

运算的结果如下所示:

B =
   62.5000   54.5000   67.5000   53.0000

或者如下所示的方式:

A=[83,38,71,58;89,72,64,33;42,12,57,68;34,71,92,48];
B=median(A,1)

此时使用该写法运行出来的结果与median(A)相同。

(3)如果想要计算一个矩阵中每个行的所有元素的中位数,可以使用median(A,2),该函数返回的是一个列向量,该向量的每一个元素对应着矩阵中每一行的中位数。代码如下所示:

A=[83,38,71,58;89,72,64,33;42,12,57,68;34,71,92,48];
B=median(A,2)

运行之后结果如下所示:

B =
   64.5000
   68.0000
   49.5000
   59.5000

(4)当median(median(A))返回的结果是一个数值,但是这里需要注意的是,该函数返回的数不是整个矩阵的中位数,而是矩阵每一列的中位数组成的向量中再取中位数。例如:

A=[83,38,71,58;89,72,64,33;42,12,57,68;34,71,92,48];
B=median(median(A))

运算的最终结果为58.5,通过实际运算可以得到该矩阵的中位数为60,而58.5的计算结果是该矩阵的每一列的中位数组成的行向量[62.5,54.5,67.5,53.0]的中位数,经过计算,该行向量的中位数是58.5,正好验证了结论。

3、标准差

在数学统计中,标准差可以对于表示一组数据的离散程度,标准差越小那么这组数据的离散程度越小,标准差越大,那么这组数据的离散程度就越大。

在MATLAB中,求解标准差的公式有两个,其中总体样本差的公式如下所示:

                                                     \delta =\sqrt{\frac{1}{n-1}\sum_{1}^{n}(x_i-\overline{x})^2}

样本标准差的公式如下所示:

                                                   \delta =\sqrt{\frac{1}{n}\sum_{1}^{n}(x_i-\overline{x})^2}

MATLAB中对于标准差进行计算的函数有std。函数std的调用方式有std(A,flag,num),当num=1的时候,计算的是矩阵各列的标准差,当num=2的时候,计算的是矩阵各行的标准差;当flag=0的时候,是按照求解标准差公式计算的标准差,当flag=1时,是按照样本标准差公式计算的标准差。

针对上面的公式A,分别使用四种不同的情况使用std函数对于该矩阵进行计算标准差,代码如下所示:

A=[83,38,71,58;89,72,64,33;42,12,57,68;34,71,92,48];
Avg=mean(mean(A))
std1=std(A,1,1)
std2=std(A,1,2)
std3=std(A,0,1)
std4=std(A,0,2)

运行的结果如下所示:

Avg =
   58.2500
std1 =
   24.2590   25.0037   13.0958   12.9301
std2 =
   16.6808
   20.3039
   21.0401
   22.1289
std3 =
   28.0119   28.8718   15.1217   14.9304
std4 =
   19.2614
   23.4450
   24.2951
   25.5522

上面所示的四种结果分别对应了std函数四种不同情况。

4、方差

在数学统计中,除了标准差之外,方差同样可以用来表示数据的离散程度。方差越大,表示该组数据的离散程度越大,方差越小,表示该组数据的离散程度越小。MATLAB中提供了var函数表示对于一组数据的方差进行计算。方差是标准差的平方,和标准差一样,方差同样也有四种不同的形式,var(A,flag,num),当flag=0时,表示使用求解标准差公式的平方计算的方差,当flag=1时,表示的是用样本标准差公式的平方计算的方差,当num=1的时候,计算的是矩阵各列的方差,当num=2的时候,计算的是矩阵各行的方差。

例如,对于上面的矩阵,对其进行四种不同的情况的方差计算的代码如下所示:

A=[83,38,71,58;89,72,64,33;42,12,57,68;34,71,92,48];
Avg=mean(mean(A))
var1=var(A,1,1)
var2=var(A,1,2)
var3=var(A,0,1)
var4=var(A,0,2)

运算后的结果如下所示:

var1 =
  588.5000  625.1875  171.5000  167.1875
var2 =
  278.2500
  412.2500
  442.6875
  489.6875
var3 =
  784.6667  833.5833  228.6667  222.9167
var4 =
  371.0000
  549.6667
  590.2500
  652.9167

5、相关系数

在数学中,相关系数表示的是数据之间的相关程度的一个指标,当相关系数越大,那么相关程度就越高,相关系数是一个相对的概念,范围在[-1,1]之间。相关系数的求解公式如下所示:

                                                            r=\frac{\sum (x_i-\overline{x})(y_i-\overline{y})}{\sqrt{\sum (x_i-\widehat{x})^2(y_i-\overline{y})^2}}

在MATLAB中使用corrcoef函数和corr函数来计算相关系数,其中调用格式如下所示:

  1. corr(x,y):返回的是两个矩阵之各列之间相关系数矩阵,其中x和y必须是列向量。
  2. corrcoef(x,y):返回的是一个相关系数矩阵。如果x和y是矩阵的话,corrcoef(x,y)会先转换为一个序列再进行计算。

例如下面这个例子:

A=[43,56,36,75,34,23,45];
B=[76,45,34,24,94,53,71];
[r,p]=corr(A',B')
x=corrcoef(A,B)

运行后的结果如下所示:

r =
   -0.5058
p =
    0.2468
x =
    1.0000   -0.5058
   -0.5058    1.0000

由上面的数据可以看出得到相关系数为-0.5058。而corrcoef函数返回的是相关系数矩阵。

6、协方差

协方差是统计学的概念,用来衡量两个变量之间的总体误差,如果两个变量具有一定的相关性的话,那么使用协方差来衡量影响。协方差的计算公式如下所示:

                                                           cov(x)=\frac{\sum_{1}^{n}(x_i-\overline{x})(y_i-\overline{y})}{n-1}

MATLAB中提供了cov函数用于计算两个相关的数据序列之间的协方差。MATLAB中cov函数的基本调用方式如下所示(其中V表示向量,A表示矩阵):

  1. cov(V):返回的是向量的方差。
  2. cov(A):返回的是一个矩阵,该矩阵是以每一列为变量,每一行为样本的矩阵。其中对角线的数是每一列方差,非对角线上是协方差。
  3. cov(X,Y):计算X和Y之间的协方差,其中X和Y之间必须是相同大小的。

(1)当V是向量时,对于返回的值是否是方差进行验证,例如:

A=[34,45,73,32,65,72];
B=var(A)
C=cov(A)

结果如下所示:

B =
  353.9000
C =
  353.9000

由上面的结果可以看出,对于一个向量使用cov函数的话,那么计算结果和方差是相同的。

(2)当A是一个矩阵的时候,如下面这个例子:

A=[34,45,73;54,37,81;44,19,15];
B=cov(A)
C=var(A)

结果如下所示:

B =
   1.0e+03 *

    0.1000   -0.0400    0.0400
   -0.0400    0.1773    0.4387
    0.0400    0.4387    1.2973
C =
   1.0e+03 *

    0.1000    0.1773    1.2973

通过对比可以发现,通过cov函数所得到的矩阵的对角线部分是该矩阵的每一列的方差,而非对角线部分计算的是协方差。

(3)计算两个矩阵之间的协方差,例如下面这个例子:

A=[34,45,54;37,62,81;19,15,44];
B=[45,64,69;73,74,79;84,85,86];
C=cov(A,B)

运行结果如下所示:

C =
  425.7778  -18.8611
  -18.8611  168.9444

cov(X,Y)实际上返回的是两个矩阵之间的线型卷积,由上面的结果可以看出两组数据之间是负相关的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MATLAB中对于矩阵的平均数、中位数、方差、标准差、相关系数以及协方差等进行计算 的相关文章

  • 将 Android 应用程序与服务器上的 Matlab 应用程序连接

    我正在 Android 上开发一个应用程序 它将获取图像输入 并将该输入传递到安装 MATLAB 应用程序的服务器 MATLAB 应用程序将计算结果并将其返回到该 Android 应用程序 我想知道我可以使用哪个服务器 如何将 MATLAB
  • 将 Matlab MEX 文件中的函数直接嵌入到 Python 中

    我正在使用专有的 Matlab MEX 文件在 Matlab 中导入一些仿真结果 当然没有可用的源代码 Matlab 的接口实际上非常简单 因为只有一个函数 返回一个 Matlab 结构体 我想知道是否有任何方法可以直接从Python调用M
  • 在matlab中设置图例符号的精度

    我有这个 leg2 strcat Max Degree num2str adet 1 1 ch l leg3 strcat Min Degree num2str adet 1 2 ch l leg4 strcat Max Request n
  • 图像增强 - 从书写中清除给定图像

    我需要清理这张照片 删除 清理我 的字样并使其变亮 作为图像处理课程作业的一部分 我可能会使用 matlab 函数 ginput 来查找图像中的特定点 当然 在脚本中您应该对所需的坐标进行硬编码 您可以使用 conv2 fft2 ifft2
  • Microsoft Visual C++ 2008 和 R2007b 的 Mex 类型

    我想对 vs2008 和 matlab2007b 使用 mex 类型 我尝试了下面的代码 include
  • matlab矩阵中求子矩阵的通用方法

    我正在寻找一种 好 方法来在更大的矩阵 任意维数 中找到矩阵 模式 Example total rand 3 4 5 sub total 2 3 1 3 3 4 现在我希望这样的事情发生 loc matrixFind total sub 在
  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • MATLAB:比较两个不同长度的数组

    我有两个长度不同的数组 由于采样率不同 需要比较 我想对较大的数组进行下采样以匹配较小的数组的长度 但是该因子不是整数而是小数 举个例子 a 1 1 375 1 75 2 125 2 5 2 875 3 25 b 1 2 3 有什么方法可以
  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 如何在Matlab中将世界坐标转换为像素索引

    我有 512x512x313 体积的 dicom 图像 并且我有一个以世界坐标表示的点 57 7475 63 4184 83 1515 我如何在 Matlab 中获得该世界坐标的相应像素坐标 我不想戳破你的幻想 但你所要求的是不可能的 我能
  • 从 Java 运行 MATLAB 函数

    我在 MATLAB 中有一个 m 文件 我想从 Java 调用该文件 并以字符串或 Java 中的任何形式获取解决方案 这听起来很简单 但由于某种原因我无法让它发挥作用 我试过这个 matlab nosplash wait nodeskto
  • MATLAB - GUI 和 OPC 服务器

    我想在 MATLAB 中设计一个图形用户界面 可以使用 MATLAB 的过程控制对象链接和嵌入 OPC 工具箱连续读取数据 我怎样才能实现这个 我已经设计了图形用户界面 但我无法将数据读入图形用户界面 就这样做 type opctoolMA
  • 使用 R2010b 中的符号工具箱来求解和/或 linsolve

    我前几天问了一个问题here https stackoverflow com questions 20317038 matlab linear congruence solver that supports a non prime modu
  • matlab部署工具到java包javac错误

    我正在尝试将我的程序包装为与 java 一起使用 我首先尝试了一个简单的 hello world 你好世界 m disp 你好世界 我使用了deploytool并选择了java包 当它到达这一行时 执行命令 javac verbose cl
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • Matlab颜色检测

    我试图一致地检测同一场景的图像之间的某种颜色 这个想法是根据颜色配置文件识别一组对象 因此 例如 如果给我一个带有绿色球的场景 并且我选择绿色作为我的调色板的一部分 我想要一个具有反映它检测到球的矩阵的函数 任何人都可以为这个项目推荐一些
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a

随机推荐

  • gitbook 入门教程之 gitbook 简介

    gitBook 是一个基于node js的命令行工具 使用 github git 和 markdown asciiDoc 构建精美的电子书 gitbook 支持输出静态网页和电子书等多种格式 其中默认输出静态网页格式 gitbook 不仅支
  • 除了安苏哪个服务器稳定,同样是魔兽世界玩家,为什么安苏服务器那么不受玩家待见?...

    原标题 同样是魔兽世界玩家 为什么安苏服务器那么不受玩家待见 在魔兽世界中只要一提到安苏服务器 相信很多玩家想到的第一个标签就是贵族服务器 然而同样作为魔兽世界国服服务器中的一员 为什么安苏服务器就那么不受玩家的待见呢 其实原因就很多 今天
  • HTTP 协议详解

    目录 前言 1 HTTP 介绍 2 URL介绍 1 了解 URL 和 URI 2 URL 格式 3 URL encode 3 HTTP 协议格式 1 请求报文格式 2 响应报文格式 3 协议格式总结 4 HTTP 请求 Request 1
  • 红宝书--第一章总结分享

    红宝书 第一章总结分享 作为一名前端开发者 我想很有必要认真阅读业界大佬的著作 这不仅能拓展认知 更能发现曾经的遗漏点和误区 为了激励自己能坚持阅读完 特在此分享自己的品读总结 菜鸟也会变成老鸟 为了我的全栈梦 前端是少不了的 1 Java
  • 如何在Windows 11上安装pycocotools(实操记录)

    参考 https blog csdn net m0 45971439 article details 118332681 https blog csdn net en Wency article details 124767742 目录 一
  • 轻松拿结果-第一部分-第二章 管理者要做“定海神针”

    第二章 管理者要做 定海神针 管理者的三张面孔 做一个严厉的爸爸 在整个团队的管理过程中坚持执行制度 提高团队的人效 做一个温暖的妈妈 让所有员工感受到团队带来的安全感 让大家有所依靠 做一个优秀的教练 有方法 成系统 精细化 过程化的对员
  • 分拆TableSplit 让多个mapper同时读取

    分拆TableSplit 让多个mapper同时读取 默认情况下 一个region是一个tableSplit 对应一个mapper进行读取 但单mapper读取速度较慢 因此想着把默认一个table split分拆成多个split 这样ha
  • AttributeError:‘CartPoleEnv‘ object has no attribute ‘seed‘解决方案

    前言 在尝试运行gym的classic control模块中的Cart Pole的相关代码时 想用随机种子重置一下环境 结果不停的报AttributeError CartPoleEnv object has no attribute see
  • PyQt5-QTablewidght设置表头外框线

    1 设置表头外框线 自带的效果 修改 经过一番探索后 添加一行代码 self logo encode table horizontalHeader setStyleSheet color rgb 0 83 128 border 1px so
  • WIN10系统下VS2019编译CloudCompare2.12.4

    目录 一 源码下载 二 源码编译 1 CCCoreLib 2 Cmake编译 3 设置相关选项 三 报错处理 四 使用插件 本文由CSDN点云侠原创 原文链接 爬虫网站自重 一 源码下载 1 CloudCompare源码 https git
  • oracle rdbms 占内存_Oracle-块损坏故障:ORA-01578

    ORA 01578 错误 ORACLE data block corrupted file s block s 块损坏故障现象 ORA 01578 一般情况下 ORA 01578 错误是由硬件问题引起的 如果ORA 01578 错误始终返回
  • 金山文档服务器暂不可用,常见问题

    GPU相对于CPU有哪些优势 GPU比CPU拥有更多的逻辑运算单元 ALU 支持并行计算 可以多线程大规模并行计算 GPU加速型云服务器是否可以支持配置升级和降级 GPU加速型云服务器支持对直通型GPU云服务器实例进行升级配置 支持套餐有G
  • mysql切换数据库命令_MySQL数据库的基础使用命令大全

    show databases 显示所有已经存在的数据库 create database test 创建名字为test的数据库 drop database test 删除名字为test的数据库 use test 使用名字为test的数据库 s
  • some()和every()的区别

    for in for of forEach some 方法用于检测数组中的是否存在元素满足指定条件 存在返回true 否则返回false 即 只要有一个元素满足条件即为true some 不会对空数组进行检测 some 不会改变原始数组 如
  • 数据分析之数据准备(1-3)

    承接数据分析之数据探索 https blog csdn net qq 45626019 article details 108074152 import pandas as pd import numpy as np housing pd
  • 【Hive】insert into 与 insert overwrite的区别

    目录 一 无分区表情况 1 创建表 2 insert into插入数据 3 继续insert overwrite插入数据 二 分区表情况 1 创建表 2 insert into插入数据 3 继续insert overwrite插入数据 三
  • Ubuntu 20.04.3 server 安装

    Ubuntu server安装 选择安装openssh 安装的时候设置镜像源 https mirrors aliyun com ubuntu 选择磁盘的时候不要选择虚拟磁盘 等待 然后重启 用ssh登录ip地址 更新源 sudo apt u
  • 【ERROR】ERROR1: PROJ: proj_create_from_database: Cannot find proj.db

    目录 场景复现 解决方案 场景复现 在使用GDAL库读取tiff格式的文件 发现居然找不到proj db文件 ERROR 1 PROJ proj create from database Cannot find proj db ERROR
  • 打卡湘大OJ的第三天

    1070 if3 Description 输入一个三位的整数 如果它有且仅有两位数码相同 那么就输出Yes 否则输出No Sample Input 112 Sample Output Yes 题解 include
  • MATLAB中对于矩阵的平均数、中位数、方差、标准差、相关系数以及协方差等进行计算

    在数据分析和数学统计的时候 常常需要对矩阵的平均数 中位数 方差 标准差 相关系数以及协方差进行计算 这些数据可以反映一组数的整体大小 离散程度 相关性等一系列性质 这些数据是进行数据处理时的重要指标 目录 1 平均数 2 中位数 3 标准