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

目录

调用函数运算

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.mzph.cn/news/864126.shtml

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

相关文章

Swift有什么时候是深拷贝,什么时候是浅拷贝?

Swift深拷贝、浅拷贝 Swift有一个指引用类型,它什么时候是深拷贝,什么时候是浅拷贝? 在Swift中,引用类型主要包括类(class)。与值类型(如结构体和枚举)不同,类的实例是通过引用进行传递的。这意味着,当你将一个类的实例赋值给另一个变量时,你实际上是在复制引用,…

返利App的用户行为分析与数据驱动决策

返利App的用户行为分析与数据驱动决策 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨返利App中的用户行为分析与数据驱动决策的技术细节和实…

UE5(c++)开发日志(2):向日志和屏幕输出信息/将C++类变为蓝图类

通过UE_LOG()向日志输出,向其传入三个参数(①输出日志类型,一般LogTemp ②具体种类,普通/警告/错误,这里是Warning ③输出的文本内容,使用TEXT(" "),这里是TEXT("Run AActor BeginPlay")) 代码写…

找茬找不同看图猜谜语小游戏

找茬找不同看图猜谜语小游戏:挑战你的观察力与智慧 🔍 挑战你的观察力:找茬找不同 你是否曾对两张看似相同的图片感到好奇,想要找出它们之间的微妙差异?找茬找不同小游戏正是为了满足你的这种好奇心而设计的。在这些游…

大模型相关基础知识

1. 什么是大模型? 大模型(Large Models)通常指的是具有大量参数的深度学习模型。这些模型通常基于复杂的神经网络架构,如Transformer,被用于处理各种复杂任务,如自然语言处理(NLP)、…

前端基础:CSS(篇一)

目录 css概述 CSS与HTML的关系 基本语法 行内样式表 代码 运行 内嵌样式表 代码 运行 外部样式表 代码 运行 选择器 标签选择器 代码 运行 id选择器 代码 运行 类选择器 代码 运行 选择器优先问题 通配选择器 选中所有的标签 代码 运行 选择器组…

记一次 .NET某网络边缘计算系统 卡死分析

一:背景 1. 讲故事 早就听说过有什么 网络边缘计算,这次还真给遇到了,有点意思,问了下 chatgpt 这是干嘛的 ? 网络边缘计算是一种计算模型,它将计算能力和数据存储位置从传统的集中式数据中心向网络边缘的用户设备、…

spring boot(学习笔记第十一课)

spring boot(学习笔记第十一课) Session共享,JPA实现自动RESTful 学习内容: Session共享JPA实现自动RESTful 1. Session共享 Session共享面临问题 spring boot默认将session保存在web server的内存里面,会产生什么问题呢。 如上图所示&#…

BUU CODE REVIEW 11 代码审计之反序列化知识

打开靶场&#xff0c;得到的是一段代码。 通过分析上面代码可以构造下面代码&#xff0c;获取到序列化之后的obj。 <?php class BUU {public $correct "";public $input "";public function __destruct() {try {$this->correct base64_encode(u…

【力扣 459】重复的子字符串 C++题解(子字符串+字符串匹配)

给定一个非空的字符串 s &#xff0c;检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: true 解释: 可由子串 “ab” 重复两次构成。 示例 2: 输入: s “aba” 输出: false 示例 3: 输入: s “abcabcabcabc” 输出: true 解释: 可由子串 “…

一文get懂kwai短视频助力巴西博弈slots游戏广告优势

一文get懂kwai短视频助力巴西博弈slots游戏广告优势 在数字化时代&#xff0c;短视频广告凭借其独特的魅力和高效的传播方式&#xff0c;成为了各大品牌进行营销推广的重要手段。特别是在巴西这个充满活力的国家&#xff0c;kwai短视频广告以其独特的方式&#xff0c;为博弈游…

Spring Boot中使用JWT进行安全认证

Spring Boot中使用JWT进行安全认证 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 引言 在现代的Web应用程序中&#xff0c;安全认证是至关重要的一环。J…

【Android面试八股文】1.你在工作中,fragment与activity通信是怎么做的 ? 2.请你说说Fragment生命周期函数的意义 ?

文章目录 1.你在工作中,fragment与activity通信是怎么做的 ?1.1. 接口回调1.2 直接调用Activity方法1.3. ViewModel2.请你说说Fragment生命周期函数的意义 ?2.1 Fragment生命周期函数2.2 Fragment的创建流程2.3 Fragment变为不可见状态2.4 Fragment由不可见变为部分可见状态…

电子技术基础(模电部分)笔记

终于整理出来了&#xff0c;可以安心复习大物线代了&#xff01;&#xff01; 数电部分预计7.10出

自动雪深传感器的类型

TH-XL2随着科技的飞速发展&#xff0c;气象监测技术也在不断进步。在降雪天气频发的冬季&#xff0c;雪深数据对于保障道路交通、农业生产和电力供应等具有至关重要的作用。自动雪深传感器作为气象监测的重要工具&#xff0c;其类型多样、功能各异&#xff0c;为气象数据的准确…

使用Vue 3 + DataV搭建大数据可视化大屏技术框架实战指南

在大数据时代&#xff0c;数据可视化成为了企业和组织理解复杂数据的关键手段。Vue 3&#xff0c;作为新一代的前端框架&#xff0c;以其更高效的性能和更灵活的Composition API吸引了众多开发者。而DataV&#xff0c;阿里巴巴开源的数据可视化组件库&#xff0c;专为大屏幕展示…

【区分vue2和vue3下的element UI Tabs 标签页组件,分别详细介绍属性,事件,方法如何使用,并举例】

在 Element UI&#xff08;针对 Vue 2&#xff09;和 Element Plus&#xff08;针对 Vue 3&#xff09;中&#xff0c;Tabs 标签页组件通常被称为 el-tabs。虽然两个版本在 API 和实现上可能有一些细微的差别&#xff0c;但基本概念和用法是相似的。下面我将分别介绍在 Vue 2 的…

Flutter全栈实战课程:与大地老师共铸移动开发新篇章!

想要成为Flutter领域的佼佼者吗&#xff1f;想要掌握从基础到高级、从实战到创新的全方位技能吗&#xff1f;大地老师倾力打造的Flutter全栈实战课程&#xff0c;将带你开启移动开发的新世界&#xff01; 17 Flutter介绍-Flutter Windows Android环境搭建 真机调试 &#x1f68…

Android开发系列(十二)Jetpack Compose之BottomSheet

BottomSheet 是 Android 中一个常用的 UI 组件&#xff0c;它通常用于显示从屏幕底部弹出的用户界面。Jetpack Compose 是 Android 中的一个全新 UI 工具包&#xff0c;它提供了一种声明式的方式来构建用户界面。Jetpack Compose 中也有一个名为 BottomSheet 的组件&#xff0c…

在C++中内存泄露的几种情况及解决内存泄露和指针越界有哪些方法?

一、在C中&#xff0c;内存泄露通常指的是程序在动态分配内存后未能正确地释放这些内存&#xff0c;导致系统资源被持续占用而无法被其他程序或该程序的后续部分使用。以下是C中内存泄露的几种常见情况&#xff0c;按照不同的原因进行分类和归纳&#xff1a; 忘记释放内存&…