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

news2024/11/17 3:25:11

目录

调用函数运算

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.coloradmin.cn/o/1868205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CST电磁仿真实践:开路半波长同轴谐振器

许多微波技术初学者得知有现成的软件能够求解麦克斯韦方程组时,内心感到非常高兴,毕竟除了数学专家,不是所有人都能熟练掌握这方面的技术。尤其是,当看到CST电磁仿真软件可以生成美观的电磁场分布彩图时,他们对CST电磁…

mac app应用程序如何自定义图标, 更换.app为自己喜欢的图标或者图片 详细图文讲解

在mac系统中,我们可以对任何的app应用程序更换或者自定义图标, 这个图标可以是拥有的app的图标,或者是你自己制作的 x.icns 图标 或者是 任意的图片, 建议大小512x512 。 自定义图标方法如下: 1. 更换为已有app的图标…

深入剖析JavaScript的原型及原型链

什么是JavaScript的原型? 原型是函数上的一个属性,它定义了构造函数制造的对象的公共祖先 原型的主要作用在于实现对象之间的属性和方法共享,从而节省内存空间,提高代码的效率 我们通过一段代码来接讲解,通过购买小米…

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

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

OpenFAST软件中linux-gnu,linux-intel,macos-gnu,vtk,windows-intel文件的作用

在OpenFAST中,5MW_Land_DLL_WTurb目录下的这五个文件夹分别有不同的用途,主要是为了支持不同操作系统和平台的编译和仿真工作。以下是每个文件夹的总结及其作用: linux-gnu 作用:包含用于GNU编译器套件(GCC&#xff09…

私有化部署 Dify 并快速搭建 AI 应用

Dify介绍 Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。以下是其核心功能列表: 1. 工作流: 在画布上构建和测试功能强大的 AI 工作流程,利用…

大数据之路 读书笔记 Day2

大数据之路 读书笔记 Day2 日志采集——浏览器的页面采集 一、分类 #mermaid-svg-ar0WySJJTNk7KvqN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ar0WySJJTNk7KvqN .error-icon{fill:#552222;}#mermaid-svg-ar0…

keil仿真,查看函数执行时间和执行次数

Execution Profiler执行档案器 The Execution Profiler records timing and execution statistics about instructions for the complete program code. To view the values in the Editor or Disassembly Window, use Show Time or Show Calls from the menu Debug — Executi…

IND83081芯片介绍(一)

一、芯片介绍 IND83081是indiemicro推出的一款高性能的汽车矩阵LED照明控制器,集成了四个子模块,每个子模块包含三个串联的MOSFET开关,每个开关均可通过12位PWM内部信号控制,可配置的上升和下降速率及相位移以实现精确控制&#x…

昇思25天学习打卡营第1天|快速入门-Mnist手写数字识别

学习目标:熟练掌握MindSpore使用方法 学习心得体会,记录时间 了解MindSpore总体架构 学会使用MindSpore 简单应用时间-手写数字识别 一、MindSpore总体架构 华为MindSpore为全场景深度学习框架,开发高效,全场景统一部署特点。 …

如何ubuntu安装wine/deep-wine运行exe程序(包括安装QQ/微信/钉钉)

1.失败的方法: ubuntu22.04尝试下面这个链接方法没有成功, ubuntu22.04安装wine9.0_ubuntu 22.04 wine-CSDN博客 上面链接里面也提供了wine官方方法,链接如下:https://wiki.winehq.org/Ubuntu_zhcn 但是运行最后一个命令时候报…

win10 C:\Users\Administrator

win10 C:\Users\Administrator C:\Users\Administrator\Documents\ C:\Users\Administrator\Pictures C:\Users\Administrator\Favorites C:\Users\Administrator\Links C:\Users\Administrator\Videos

【C++】————内存管理

作者主页: 作者主页 本篇博客专栏:C 创作时间 :2024年6月26日 一、C内存分布 我们先来看一串代码: int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] …

电脑怎么设置锁屏密码?这3个方法你知道吗

在日常生活中,电脑已成为我们工作和娱乐的重要工具。为了保护个人信息和数据安全,设置锁屏密码是必不可少的一步。通过设置锁屏密码,您可以有效防止未经授权的访问,确保电脑上的隐私和数据不被泄露。本文将详细介绍电脑怎么设置锁…

STM32_hal_STM32Cude_实现RT—Thread系统

1stm32cude下载系统 1.-2下载显示绿色的为下载成功 2为项目导入系统---点击如下选项 2-1选中如下 意思为 kemel 系统内核 shell shell的实现 device 设备 2-2可以看到项目选项中多了如图选项 3实现led闪烁 3-1 定义两个引脚用于控制led 3-2选择时钟源 3-3更改延迟函数…

Planned independent reguirement can only be maintained via the network

背景:用户上线ps系统,物料用策略70跑需求 但是因为通用料被改了策略,改成其他的了,影响到计划独立需求了。 如果用户不需要了哪个料就会把数量改为0,或者直接删掉物料。之前建议是改成0,这样还有个记录在…

【Python机器学习】交互特征与多项式特征

对于线性模型来说,想要丰富特征,还有一种方法是添加原始数据的交互特征和多项式特征。这种特征工程通常用于统计建模,但也经常用于实际的机器学习应用中。 交互特征 上一篇的例子里,线性模型对wave数据集的的每个箱子都学到一个…

基于稀疏矩阵方法的剪枝压缩模型方案总结

1.简介 1.1目的 在过去的一段时间里,对基于剪枝的模型压缩的算法进行了一系列的实现和实验,特别有引入的稀疏矩阵的方法实现了对模型大小的压缩,以及在部分环节中实现了模型前向算法的加速效果,但是总体上模型加速效果不理想。所…

从零到一打造自己的大模型:模型训练

前言 最近看了很多大模型,也使用了很多大模型。对于大模型理论似乎很了解,但是好像又缺点什么,思来想去决定自己动手实现一个 toy 级别的模型,在实践中加深对大语言模型的理解。 在这个系列的文章中,我将通过亲手实践…

【面试题】Spring面试题

目录 Spring Framework 中有多少个模块,它们分别是什么?Spring框架的设计目标、设计理念?核心是什么?Spring框架中都用到了哪些设计模式?Spring的核心机制是什么?什么是Spring IOC容器?什么是依…