数学建模 —— 矩阵的运算(上)

目录

调用函数运算

sum : 求和函数

prod : 求乘积函数(product)

cumsum : 计算累积和(cumulative sum)

diff : 计算差分(difference)

mean : 计算平均值 (average)

median : 计算中位数

mode : 计算众数

var : 计算方差 (variance)

std : 计 算 标 准 差 (standard deviation)

min : 求最小值 (minimum value)

max : 求最大值 (maximum value)


调用函数运算

常见的数学运算函数,例如abs,sin,round,log 等。这些函数可以 直接应用到矩阵上,所表示的含义是:对矩阵中的每个元素分别运用这些数学运算函数,因此 返回的结果也是一个矩阵。下面我们来举几个例子:

 除了这些最基础的数学运算函数外,这一小节我们还要学习下表这些使用频率较高的函数, 大家需要熟练掌握它们的用法(点击函数名称可以快速跳转到相应的位置):


sum : 求和函数

(1)如果A是一个向量,则sum(A)可以计算A中所有元素的和。

(2)如果A 是一个矩阵,则sum(A,dim)可以计算A矩阵沿维度dim 中所有元素的和

●  dim=1表示沿着行方向进行计算,即计算矩阵每一列的和,返回一个行向量;

●  dim=2表示沿着列方向进行计算,即计算矩阵每一行的和,返回一个列向量。

当dim=1时,sum(A,1)可以简写成sum(A)。

(3)计算一个矩阵中所有元素的总和。可以先用一次 sum 函数计算矩阵A 每一列的和,返回一个行向量;然后再用一次 sum 函数计算这个行向量的和;也可以先使用 A(:) 语句把 A 中的所有元素按照线性索引的顺序拼接成一个向量,然后直接计算这个向量的和。

(4)指定如何处理 NaN 值。NaN 指不定值或缺失值(Not a Number)。默认情况下,求和时有一个元素为NaN 值,那么最终的和也为NaN;我们可以在最后加一个输入参数:'omitnan',这样计算时会忽略NaN值。


prod : 求乘积函数(product)

prod 函数的用法和sum 函数的用法相同,它是用来计算乘积的,我们直接来看例子。


cumsum : 计算累积和(cumulative sum)

(1)如果A 是一个向量,则cumsum(A)可以计算向量A 的累积和(累加值)

 (2)如果A 是一个矩阵,则cumsum(A,dim)可以计算A 沿维度 dim 中所有元素的累积和,具体的使用方法和sum函数类似。

 (3)也可以在最后加一个输入参数:'omitnan',这样计算时会忽略NaN值


diff : 计算差分(difference)

差分运算在和时间相关的数据中用的比较多。在原始序列中用下一个数值减去上一个数值可以得到一个新的序列,这个过程就是一阶差分;在一阶差分结果的基础上再进行一次一阶差分,就是二阶差分,举个例子,下表是8年来的体重变化,我们可以计算一阶差分和二阶差分的结果:

 diff 函数也可以用在矩阵上面: diff(A,n,dim)表示沿矩阵A 的维度dim 方向上计算差分, 当dim=1 时沿着行方向计算,即得到每列的n 阶差分;当dim=2 时沿着列方向计算,即得到每行的n 阶差分。类似的,dim=1时 ,diff(A,n,1)也可以简写成diff(A,n)。


mean : 计算平均值 (average)

 (2)如果A 是一个矩阵,则mean(A,dim)可以计算A 沿维度dim 中所有元素的平均值。

● 当dim=1 时沿着行方向进行计算,即得到每列的平均值

当 dim=2 时沿着列方向进行计算,即得到每行的平均值

类似的,dim=1时,mean(A,1)也可以简写成mean(A).

(3)也可以在最后加一个输入参数:'omitnan',这样计算时会忽略NaN值。 


median : 计算中位数


mode : 计算众数

众数是指一组数据中出现次数最多的数。 一组数据可以有多个众数,例如向量[1 3 -1 2 1 3] 中,1和3都出现了两次,它们都是这组数据中的众数。

MATLAB 中可以使用mode 函数计算数据的众数,调用方法也和 mean 函数类似,但是 mode 函数可以有多个返回值。

以计算向量A 的众数为例,直接调用mode(A)会返回A 中出现次数最多的值。如果有多个值以相同的次数出现,mode 函数将返回其中最小的值。

如果A 是一个矩阵,则mode(A,1)或者mode(A)可以沿着行方向进行计算,得到每一列的众数;mode(A,2)可以沿着列方向进行计算,得到每一行的众数,这里的1和2表示维度dim。

注意:使用mode 函数计算众数时会自动忽略NaN 值,我们不能额外添加'omitnan'参数, 否则会报错。

现在我们来看 mode 函数有两个返回值的例子,如果A 是一个向量,[M,F]=mode(A) 得到的M表示向量A的众数,F表示众数M在向量A中出现的次数。

上面这个例子中,有两个众数,分别是0和8,它们出现的次数都是3次,此时MATLAB 会返回最小的那个数作为众数。MATLAB 能不能把这些众数都输出呢?

当然可以,我们需要用到mode 函数的第三个返回值:[M,F,C]=mode(A),  这里的C 是一个元胞数组,元胞数组里面有一个列向量,列向量中的每个元素都是向量 A 的众数 。(注意,元胞数组(cell array)是使用大括号{ }括起来的,元胞数组里面的元素可以包含不同的数据类型,例如标量、向量、矩阵、字符串等)

命令C{1}可以提取出元胞数组C 中的第一个数据:列向量[0;8]。这个列向量中的元素0 和8都是向量A 的众数。

以上是A 为向量时的情况,如果A 是一个矩阵,mode 函数也可以有两个返回值或三个返 回值,后两个返回值代表的含义与A 为向量时类似。我们直接看下面的例子:

M 是一个包含四个元素的行向量,里面第k 个元素表示第k 列的众数,例如第1列的众数为0;如果有多个众数,那么会返回最小的那个值,因此第2列返回的众数为0。

F 也是一个包含四个元素的行向量,它表示M 中的各个众数在其所在列中出现的次数, 例如第1列的众数0在第1列出现了2次。

C 是一个大小为1×4的元胞数组,里面的第k 个数据表示第k 列的所有众数。从元胞数组 C 的结果来看,第一个和第四个数据分别为0和4,这说明第1列和第4列都只有一个众数,分别是0和4;C 中第二个数据是一个4行1列的列向量,这说明第2列有四个众数;C  中第 三个个数据是一个2行1列的列向量,这说明第3列有两个众数。

我们可以使用大括号索引提取C 中的每个数据:

 类似的,我们也可以计算A矩阵每一行的所有众数,结果如下:


var 计算方差 (variance)

方差是概率论与数理统计里面的知识点,我们先简单回顾一下相关的内容。

先来看个例子:第一组数据是6、8、10、12、14;第二组数据是-10、0、10、20、30。显 然两组数据的均值都是10,但第二组数据的离散程度更大一些。

方差就是用来描述这种离散程度的一个统计量,当两组数据的平均值相同时,方差较大的一组数据的离散程度更大。有一个常举的例子: 一个射击队要从两名运动员中选拔一名参加比赛,选拔赛上两人各打了10发子弹,在得分均值相差不大的情况下,应选择方差更小的队员。

在现实生活中,我们收集到的数据可分为下面两类:

总体数据:所要考察对象的全部个体叫做总体

样本数据:从总体中所抽取的一部分个体叫做总体的一个样本。 根据收集的数据类型的不同,我们计算方差的公式也有所区别。

从上方的计算公式可以看出,总体方差和样本方差在计算时的区别在于分母上是否要减1。

MATLAB中使用var 函数计算方差:

(1)如果A 是一个向量,那么 var(A,w)可以计算A 的方差,当w=0 时,表示计算样本 方 差 ,w=1 时表示计算总体方差,另外,var(A,0)  也可以直接简写为var(A)。

(2)如果A 是一个矩阵,则var(A,w,dim) 可以计算矩阵A沿维度dim 上的方差。

●   dim=1时表示沿着行方向进行计算,即得到每一列的方差;

●   dim=2时表示沿着列方向进行计算,即得到每一行的方差。

当 dim 为 1 时 ,var(A,w,1) 可以简写为var(A,w);若 w 为0,则可以进一步简写为

var(A),即默认情况下MATLAB会沿行方向计算得到每一列的样本方差。

(3)如果数据中存在NaN 值,可以在var函数的最后加上'omitnan'参数来忽略NaN.


std : 计 算 标 准 差 (standard deviation)

标准差是方差的算术平方根,它也是用来反应数据离散程度的一个统计量。那么问题来了, 既然有了方差为什么还需要标准差呢?这是因为方差和数据原本的量纲(即单位)是不一致的, 对方差的计算公式进行量纲分析容易看出,方差的量纲是原始数据量纲的平方,因此对方差开 根号,得到的标准差的量纲和原始数据的量纲一致。

在MATLAB  中,我们可以使用std函数计算样本标准差和总体标准差,它和var函数的使 用方法完全相同。


min : 求 (minimum value)

min函数主要有两种用法:

用法一:求两个矩阵对应位置元素的最小值:min(A, B)。

矩阵A和矩阵B的大小可以不一样,只要保证矩阵A和矩阵B具有兼容的大小就能够计算 ,下面再举两个例子:表中第三列是运行min(A,B)后返回的结果。

用法二:求向量或者矩阵中的最小值,可以指定沿什么维度计算并返回索引。

具体用法有以下三种:

(1)如果A是向量,则min(A)返回A 中的最小值。如果A 中有复数,则比较的是复数的模长。

 (2)如果A 是矩阵,则min(A,[ ],1)   沿着A 的行方向求每一列的最小值,也可以简写为 min(A);min(A,[ ],2)沿着A的列方向求每一行的最小值。这里的1和2表示矩阵的维度(dim)

 为什么中间要加一个空向量[ ]?如果不加的话,就是将A 中每个元素和 1或者2 比较大小,并返回较小值。

 (3)在求向量或矩阵的最小值时,min 函数可以有两个返回值: [m,ind]=min(A).  第一个返回值m 是我们要求的最小值,ind 是最小值在所在维度上的索引。如果最小元素出现多次, 则ind是最小值第一次出现位置的索引。

上面我们介绍了min 函数的两种用法,如果向量或者矩阵中存在NaN 值 ,min  函数会自 动忽略,大家不需要单独对NaN值进行处理。


max : 求 (maximum value)

max函数和min函数的用法完全相同,它是用来求最大值的函数,下面我们举几个例子:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/362158.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

教程:在 Kubernetes 集群上部署 WordPress 网站

WordPress 是专为每个人设计的开源软件,强调创建网站、博客或应用程序的可访问性、性能、安全性和易用性。WordPress 是一个基于 PHP 的内容管理系统(CMS),使用 MySQL 作为数据存储,目前很多网站、电商独立站、个人博客…

华为od-C卷200分题目3 - 两个字符串间的最短路径问题

华为od-C卷200分题目3 - 两个字符串间的最短路径问题 题目描述 给定两个字符串,分别为字符串A与字符串B。 例如A字符串为ABCABBA,B字符串为CBABAC可以得到下图m*n的二维数组,定义原点为(0, 0),终点为(m, n),水平与垂…

知识图谱介绍及其应用领域分析

1.知识图谱 知识图谱(Knowledge Graph)乃一种精心设计的技术,旨在储存并整合交织的描述性知识信息。此技术通过构建由实体及其相互关系所组成的网络结构,实现对知识的有序组织与呈现。这些实体涵盖广泛的范畴,包括但不限于具体的物体、事件或抽象概念,它们经由多样化的关…

【论文导读】CCF语音对话与听觉专委会论文导读(2024年第1期)-- INTERSPEECH 2024专题(一)

为促进最新研究成果的传播与交流,CCF语音对话与听觉专委在专委会微信公众号启动论文导读栏目,定期分享最新语音、对话与听觉相关研究方向论文。本期是2024年导读栏目的第1期,也是INTERSPEECH 2024专题第一部分,共遴选了7篇论文&am…

参加六西格玛绿带培训是投资未来,还是花冤枉钱?

是否值得花费资金参加六西格玛绿带培训,取决于多个因素。 从积极的方面来看,参加六西格玛绿带培训具有以下潜在价值: 1. 提升专业技能:使您掌握一套系统的问题解决方法和流程改进工具,有助于在工作中更高效地解决复杂…

今天不看明天付费------中国AGI(人工智能)的发展趋势

深入解析了中国AGI(人工智能)的发展趋势,并清晰地展示了其市场分层结构。 ** 从下至上,AGI市场被划分为四个主要层级:基础设施层、模型层、中间层和应用层。 基础设施层作为最底层,为AGI的发展提供了坚实…

vue3+element ui +ts 封装周范围选择器

vue3element ui ts 封装周范围选择器 在业务场景中,产品需要在页面中使用周范围选择器,我们在使用ant-design的时候里面是有自带的,但是在emement中只有指定周的范围选择器: 这个是ant-design的周范围选择器 这个是element ui 的…

web基础学习

1、安装 React 从一开始就被设计为可以被渐进地采用,你可以根据需要或多或少地试用 React。无论你只是想体验一下 React,并为 HTML 页面添加一些交互性,还是创建一个复杂的 React In this chapter 如何将 React 添加到 HTML 页面中 如何新建…

gin-vue -admin 初始化安装后 进入 后台首页报错

报错原因: 因为 我是使用的phpstudy 小皮的数据库 默认的是MySam 的引擎 mysql 引擎需要是 innoDB 解决办法 : 在linux 的环境下 配置一个数据库 , 我是用的是vmware 虚拟机

RP2040 开发,用 Arduino 通过 ADC 获取电压测量数据

这两天测试了一下如何通过 RP2040 的内置 ADC 获取一个待测量的电压数据,RP2040 内置了4路ADC,分辨率是12bit,也就是说,可以获取4096阶的变化量,但第4个 ADC 已经用于测量芯片的内部温度,所以实际能用的仅有…

【ARMv8/v9 GIC 系列 4 -- GIC 中断分类 SGI | PPI | SPI 及中断检测流程】

文章目录 GIC 中断分类SGI(Software Generated Interrupts)PPI(Per-Processor Interrupts)SPI(Shared Peripheral Interrupts) 中断检测流程物理中断生命周期SPI 中断检测流程PPI 和SGI中断检测流程LPI中断…

【课程总结】Day10:卷积网络的基本组件

前言 由于接下来的课程内容将围绕计算机视觉展开,其中接触最多的内容是卷积、卷积神经网络等…因此,本篇内容将从卷积入手,梳理理解:卷积的意义、卷积在图像处理中的作用以及卷积神经网络的概念,最后利用pytorch搭建一…

“山寨版”《草料二维码》

背景 之前浏览过草料二维码的网站,他的二维码美化功能很强大💪,可以分别自定义码眼和码点的形状和颜色! 碰巧之前写过一个 npm 插件 qrcode-with-logos, 用于前端生成带 logo 的二维码。 而且在 github 的 issues 里有外国友人…

【Docker】安装和加速

目录 1.安装 2.了解 docker 信息 3.查询状态 4. 重新启动Docker 1.安装 yum install –y docker 2.了解 docker 信息 cat /etc/redhat-release 3.查询状态 systemctl status docker 4.支持 1.12 的 docker 镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docke…

Java 流式编程的7个技巧,必学!

作为Java开发者,我们还没有完全掌握Java Streams这个多功能工具的威力。在这里,你将发现一些有价值的技巧,可以作为参考并应用到你的下一个项目中。 Java Streams在很多年前就被引入了,但作为Java开发者,我们还没有完…

TEMU半托管模式引领跨境电商新风尚

TEMU半托管模式作为2024年的热门话题,正吸引着越来越多卖家的目光。继全托管模式取得巨大成功之后,半托管模式的推出无疑为跨境电商行业注入了新的活力。 在选品方向上,TEMU半托管模式强调商品的聚焦与精选。卖家在选择上架商品时&#xff0c…

Mysql需要知道的点

目录 一、数据库的三范式是什么 二、Mysql数据库引擎有哪些 三、说说Innodb与MYISAM的区别 四、数据库的事务 五、索引是什么 六、优化手段有哪些 七、简单说一说 drop,delete与truncate的区别 八、什么是视图 九、什么是内连接、左外连接、右外连接&#x…

Spring中的InitializingBean接口

使用方法 Slf4j Component public class MyBean implements InitializingBean {public MyBean() {log.info("> 构造方法");}Overridepublic void afterPropertiesSet() throws Exception {log.info("> afterPropertiesSet方法");} }Spring中的Bean注…

Hive-存储-文件格式

一、前言 数据存储是Hive的基础,选择合适的底层数据存储格式,可以在不改变Hql的前提下得到大的性能提升。类似mysql选择适合场景的存储引擎。 Hive支持的存储格式有 文本格式(TextFile) 二进制序列化文件 (SequenceF…

vue2 + dataV 组件问题

在使用 dataV 过程中,遇见 svg 动画不加载问题。 一、理想状态下: 二、开发中遇到的 加载不出来问题。 解决方案 在查找官方资料中,提到使用 key 可以解决方案。 1 绑定 key 2 改变 key 值 注意:一定要在 $nextTick 里面执…