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

目录

调用函数运算

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函数的用法完全相同,它是用来求最大值的函数,下面我们举几个例子:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Taro +vue3 中的微信小程序中的分享

微信小程序 右上角分享 的触发 以及配 useShareAppMessage(() > {return {title: "电影属全国通兑券",page: /pages/home/index,imageUrl: "http:///chuanshuo.jpg",};}); 置 就是Taro框架中提供的一个分享Api 封装好的

计算机网络:408考研|湖科大教书匠|原理参考模型II|学习笔记

系列目录 计算机网络总纲领 计算机网络特殊考点 计算机网络原理参考模型I 计算机网络原理参考模型II 目录 系列目录更新日志前言应用层(Application Layer)一、应用层概述二、客户/服务器方式和对等方式三、动态主机配置协议(DHCP, Dynamic Host Configuration Protocol)四、域…

LabVIEW技术交流-布尔灯仿真数码管

问题来源 闲来无事,逛论坛问答,看到这样一个问题,觉得有意思,就自己尝试下。 这个功能其实是不难的,就是显示不同的数值时,对相应的布尔灯进行真假值操作就行了。但是我又想到了更有趣的玩法,能…

Github 2024-06-27 Go开源项目日报Top10

根据Github Trendings的统计,今日(2024-06-27统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Ollama: 本地大型语言模型设置与运行 创建周期:248 天开发语言:Go协议类型:MIT LicenseStar数量:42421 个Fork数量:2724 次关注人…

零点到两点,我部署了一个es

一开始的准备 实在是水平有限,Clash虚拟机网出不去,研究了LAN方案,还在咸鱼买了一单,搞不定,没辙,那我老老实实下载tar包得了,就不docker了 下载安装 直接官网给它安个es https://www.elasti…

如何理解:业务架构、应用架构、数据架构、技术架构与系统和复杂度

关于系统的理解 1.1 系统的概述 随着人类社会的发展,人们面对越来越多的规模巨大、关系复杂、参数众多地复杂问题,这些问题的复杂度已经远远超出人类的理解能力,系统论就是为了分析和解决这些问题而生。我们平时接触的计算机系统包括软件系统…

3.PyQt6常用基本控件

目录 常用控件 1.文本类控件 1.QLable标签控件 1.设置标签文本 2.设置标签文本和对齐方式 3.换行显示 4.添加超链接 5.为标签设置图片 6.获取标签文本 2.QLineEdit单行文本控件 3.QTextEdit多行富文本控件 4.QPlainTextEdit纯文本控件 5.QSpinBox整数数字选择控件 …

【深度学习】tensorboard的使用

目前正在写一个训练框架,需要有以下几个功能: 1.保存模型 2.断点继续训练 3.加载模型 4.tensorboard 查询训练记录的功能 命令: tensorboard --logdirruns --host192.168.112.5 效果: import torch import torch.nn as nn impor…

linux下OpenSSL升级到1.1以上版本

要将CentOS 7上的OpenSSL升级到1.1以上版本,您需要遵循以下步骤。请注意,这些步骤可能需要一些系统管理经验,因为您将从源代码编译和安装OpenSSL。 1. 更新系统软件包 首先,确保您的系统软件包是最新的。使用以下命令更新所有软…

开发RpcProvider的发布服务(NotifyService)

1.发布服务过程 目前完成了mprpc框架项目中的以上的功能。 作为rpcprovider的使用者,也就是rpc方法的发布方 main函数如下: 首先我们init调用框架的init,然后启动一个provider,然后向provider上注册服务对象方法,即us…

企业内部运营常用的API服务有哪些?

企业内部运营常用的API服务是现代企业管理和协作的关键工具之一。这些API服务提供了丰富的功能和工具,帮助企业提高内部运营效率、优化业务流程和加强团队协作。首先,企业内部通信和协作API服务是不可或缺的。通过这些API服务,企业可以建立内…

maven的安装以及配置

前言: Maven是一个强大的构建自动化工具,主要用于Java项目。它解决了软件开发中的两个方面: 构建和依赖管理:Maven通过在项目对象模型(POM)文件中指定依赖关系,简化了项目构建和依赖管理的过程…

掉了两根头发后,我悟了!vue3的scoped原来是这样避免样式污染(上)

前言 众所周知,在vue中使用scoped可以避免父组件的样式渗透到子组件中。使用了scoped后会给html增加自定义属性data-v-x,同时会给组件内CSS选择器添加对应的属性选择器[data-v-x]。这篇我们来讲讲vue是如何给CSS选择器添加对应的属性选择器[data-v-x]。…

当电力市场碰上量化分析技术,如何构建高效电力交易解决方案?

在数字化浪潮的推动下,物联网技术正重塑着各领域,电力交易市场亦不例外。作为能源市场的关键一环,电力交易的效率和透明度对于保障能源系统的稳定运行和可持续发展具有重要意义。物联网技术的兴起为电力交易市场带来了精细化资源管理的新机遇…

面向遥感图像的多阶段特征融合目标检测方法

源自:电子学报 作者:陈立 张帆 郭威 黄赟 注:若出现无法显示完全的情况,可 V 搜索“人工智能技术与咨询”查看完整文章 摘 要 遥感图像目标具有多尺度、大横纵比、多角度等特性,给传统的目标检测方法带来了新的…

单片机是否有损坏,怎沫判断

目录 1、操作步骤: 2、单片机损坏常见原因: 3、 单片机不工作的原因: 参考:细讲寄存器读写与Bit位操作原理--单片机C语言编程Bit位的与或非屏蔽运算--洋桃电子大百科P019_哔哩哔哩_bilibili 1、操作步骤: 首先需要…

煤安防爆手机为什么能在煤矿井下使用

煤安防爆手机之所以能在煤矿井下使用,是因为它们经过特殊设计,符合严格的防爆安全标准,能够防止电火花引发爆炸,同时具备防尘防水、抗冲击等特性,确保在恶劣的煤矿环境中稳定可靠地运行,为工作人员提供安全…

新交友盲盒+付费进群二合一源码+视频教程

盲盒交友脱单系统 包括项目前端和后端的讲解、宝塔面板的安装教程,以及盲盒交友和付费进群二合一的搭建教程。无论你是技术小白还是有一定技术基础,都能轻松搭建出属于自己的盲盒交友平台。

[leetcode]first-unique-character-in-a-string 字符串中的第一个唯一字符

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int firstUniqChar(string s) {unordered_map<int, int> frequency;for (char ch: s) {frequency[ch];}for (int i 0; i < s.size(); i) {if (frequency[s[i]] 1) {return i;}}return -1;} };

DP:二维费用背包问题+似包非包

二维费用的背包问题&#xff1a;大多以01背包为基础&#xff0c;存在两个限制条件&#xff01; 一、一和零 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public: //需要满足两个条件的我们称之为二位费用的背包问题int findMaxForm(vector<string>&…