MATLAB知识点:mode :计算众数
讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。
MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili
节选自第3章 3.4.1节
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×1,即一行一列,因此里面只有一个元素,这个元素是一个2行1列的列向量。我们可以使用大括号索引的方式来提取元胞数组中的元素:

命令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矩阵每一行的所有众数,结果如下:

下面对mode函数做一个总结:
(1) mode函数可用来计算一个向量或者矩阵中的众数。如果mode函数只有一个返回值,那么它的用法和mean函数、median函数类似。
(2) 如果A是一个向量,那么M = mode(A)可以计算向量A的众数,若存在多个众数,则只会返回其中的最小值。
(3) 如果A是一个矩阵,那么M = mode(A, dim)可以计算矩阵A沿着维度dim中所有元素的众数。当dim=1时沿着行方向进行计算,即得到每列的众数;当dim=2时沿着列方向进行计算,即得到每行的众数。另外,mode(A,1)可以简写成mode(A)。
(4) mode函数不能使用'omitnan'参数,MATLAB在计算众数时会自动忽略向量或者矩阵中的NaN值。
(5) mode函数最多能有三个返回值:[M,F,C] = mode(A). 如果A是向量,那么M表示向量A的众数,F表示众数M在向量A中出现的次数,如果A中存在多个众数,MATLAB会返回最小的那个数作为M,第三个返回值C则是一个元胞数组,里面包含了A的所有众数。如果A是矩阵,那么M、F和C分别代表每一列的众数、每一列众数在所在列中出现的次数以及每一列的所有众数构成的元胞数组。
另外,本小节用到了元胞数组的知识,元胞数组中的元素用大括号{}括起来,各元素可以是不同的数据类型,要提取元胞数组中的元素可以使用大括号进行索引,例如,要提取元胞数组C中的第一个元素,可以使用C{1}。未来章节我们会系统学习元胞数组的用法,感兴趣的同学可以提前在MATLAB官网搜索关键词进行学习。
相关文章:
MATLAB知识点:mode :计算众数
讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。 MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章 3.4.1节 mode :计算众数 众数是指一…...
【JavaWeb】MVC架构模式
文章目录 MVC是什么?一、M :Model 模型层二、V:View 视图层三、C:Controller 控制层四、非前后端分离MVC五、前后端分离MVC总结 MVC是什么? MVC(Model View Controller)是软件工程中的一种**软件…...
【Unity学习笔记】创建人物控制器
人物左右移动 1 导入模型,如果没有模型,则在 窗口-资产商店-free sample 找到人物模型 2 在 窗口-包管理中 导入自己的模型 3 在自己的资产文件夹中找到Prefabs Base HighQuality MaleFree1模型,导入到场景中 4 Assets中创建C#项目 写入如下…...
HCIP:不同VLAN下实现网络互相通信
配置pc1 配置pc2 配置pc3 将sw1划分到vlan3 将sw3划分到vlan3 在sw1上进行缺省 将sw1上(g0/0/1)的untagged改成 1 3 则在pc1上ping pc2可通 在sw1上进行缺省 在sw3上(e0/0/1)打标记 则在pc1上ping pc3可通(实现互通&am…...
07 队列
目录 1.队列 2.实现 3.OJ题 1. 队列 只允许在一段进行插入数据操作,在另一端进行数据删除操作的特殊线性表,队列具有先进先出FIFO(First In Firtst Out),插入操作的叫队尾,删除操作的叫队头 2. 实现 队列…...
产品面试题2
39.产品经理在与 开发团队合作时,以下哪个角色负责将产品需求转化为可执行的任务? a) 技术经理 b) 交互设计师 c) 项目经理 d) 开发工程师 答案:c 40.以下哪个方法适用于评估产品的用户满意度和体验? a) 用户访谈 b) 用户调研问卷…...
[NSSCTF]-Web:[SWPUCTF 2021 新生赛]easy_md5解析
先看网页 大致就是输入name和password的值,只要他俩的值不一样,然后经过md5函数之后一样就能出flag。 解法一(利用php的科学计数法): 在php中,假设a,b为数字,那科学计数法可以用ae…...
嵌入式解惑——串口通信中的流控制有什么作用?
在串口通信中,流控制(Flow Control)是一个非常重要的概念。它主要是用来协调发送端和接收端的数据传输速率,以防止接收端流量过大导致的数据丢失问题。 串口通信的特点是数据是以串行方式,一位一位的进行传输。如果…...
Kubernetes-Taint (污点)和 Toleration(容忍)
目录 一、Taint(污点) 1.污点的组成 2.污点的设置、查看和去除 3.污点实验: 二、Toleration(容忍) 1.容忍设置的方案 2.容忍实验: Taint 和 toleration 相互配合,可以用来避免 pod 被分配…...
python三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1…...
uniapp 用css animation做的鲤鱼跃龙门小游戏
第一次做这种小游戏,刚开始任务下来我心里是没底的,因为我就一个‘拍黄片’的,我那会玩前端的动画啊,后面尝试写了半天,当即我就给我领导说,你把我工资加上去,我一个星期给你做出来,…...
JeecgBoot 3.6.1实现Modal对话框,以为审核数据为例
JeecgBoot 3.6.1实现Modal对话框 vue使用的是3.0版本 文章目录 JeecgBoot 3.6.1实现Modal对话框前言一、列表页面关键代码示例二、textAuditModal.vue代码示例三、test.api.ts总结 前言 在工作中,有一个需求,要求,在数据列表页,…...
Spring基于dynamic-datasource实现MySQL多数据源
目录 多数据源实现 引入依赖 yml配置文件 业务代码 案例演示 多数据源实现 引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>dynamicdatasourcespringbootstarter</artifactId><version>3.5.0</version> &…...
JS高频面试题(下)
11. 线程和进程的区别 进程是资源分配的最小单元,线程是代码执行的最小单元。 一个应用程序可能会开启多个进程,进程之间数据不共享,一个进程内部可以开启多个线程,线程之间的数据可以共享的,所以多线程的情况下&…...
单点登陆(SSO)基于CAS实现前后端分离的SSO系统开发「IDP发起」
关于其他前端常见登录实现单点登录方案,请见「前端常见登录实现方案 单点登录方案 」 前沿 单点登录(SSO),英文全称为 Single Sign On。 SSO 是指在多个应用系统中,用户只需要登录一次,就可以访问所有相互…...
二叉树
目录 1翻转二叉树 2对称二叉树 3二叉树的深度 最大深度 最小深度 4二叉树的结点数量 完全二叉树的结点数量 5平衡二叉树 6 中序 后序求前序 二叉树结构体如下: struct freenode {int data;struct freenode *lchild, *rchild;//左孩子 右孩子 }T; 1翻转二…...
边缘计算:挑战与机遇的平衡艺术
前言 边缘计算作为云计算的补充,通过在数据源近处进行数据处理,已经成为实现物联网(IoT)、自动驾驶、智慧城市等应用的重要技术。然而,边缘计算的发展和普及也面临不少挑战,同时也带来了巨大的机遇。 方向…...
Windows11 Copilot助手开启教程(免费GPT-4)
Windows11上开启Copilot助手教程踩坑指南 Copilot介绍Copilot开启步骤1、更新系统2、更改语言和区域3、下载 ViVeTool 工具4、开启Copilot 使用 Copilot介绍 Windows Copilot 是 Windows 11 中的一个新功能,它可以让你与一个智能助理进行对话,获取信息&…...
【Golang入门教程】如何使用Goland创建并运行项目
自然语言处理的发展 文章目录 自然语言处理的发展**前言**创建新项目编辑运行/调试配置编写并运行代码总结强烈推荐专栏集锦写在最后 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站: 人工…...
鸿蒙开发实战-手写文心一言AI对话APP
运行环境 (后面附有API9版本,可修改后在HarmonyOS4设备上运行) DAYU200:4.0.10.16 SDK:4.0.10.15 IDE:4.0.600 在DAYU200:4.0.10.16上运行 一、创建应用 1.点击File->new File->Create Progect 2.选择模版…...
矿井排水系统直接关系到煤矿安全生产,今天咱们掰开揉碎了聊聊西门子S7-200 PLC控制三台水泵的实战经验。老规矩,先上干货再说原理
基于西门子PLC的煤矿排水系统控制,内容包括 [1]S7-200 PLC程序[2]MCGS6.2组态画面[3]电气图纸精品文档 共有3台水泵进行矿井排水,分别为1号水泵,2号水泵,3号水泵 其中1号,2号水泵是工作水泵,3号水泵是备用水…...
实战复盘:从帕鲁杯应急响应赛题看企业级安全事件调查全流程
企业级安全事件调查实战指南:从CTF赛题到真实攻防溯源 在网络安全领域,应急响应能力直接决定了企业遭受攻击后的损失程度。去年某大型电商平台因未能及时识别攻击链,导致用户数据持续泄露长达三周,最终造成数亿元的直接损失。这类…...
智能体AI崛起:本体论如何赋能药物研发新纪元?——2026智能体年深度解析
智能体AI作为生成式AI的进化方向,赋予AI决策和行动能力,在生命科学领域应用前景广阔。本文探讨了智能体AI的定义、架构及应用,重点分析了本体论如何通过语义标准化和跨系统映射,解决智能体在处理复杂科学知识、实现跨语言和系统语…...
基于vue的错题管理系统[vue]-计算机毕业设计源码+LW文档
摘要:随着在线教育的发展,错题管理作为学习过程中的重要环节,其信息化管理需求日益增长。本文旨在设计并实现一个基于Vue框架的错题管理系统,通过对系统需求进行深入分析,采用合适的技术架构和开发技术,完成…...
UEFI SCT编译调试踩坑记:我的AARCH64环境搭建与问题解决实录
UEFI SCT编译调试实战:AARCH64环境搭建与疑难问题全解析 当你在深夜的办公室里盯着屏幕上闪烁的光标,第N次尝试编译UEFI SCT测试套件时,那种既熟悉又陌生的挫败感再次袭来。作为UEFI开发者,我们都经历过这样的时刻——官方文档看似…...
别再手动测试了!教你用ThinkPHP6+Workerman/MQTT搭建一个本地MQTT消息调试台
基于ThinkPHP6与Workerman/MQTT构建物联网调试平台的完整指南 物联网开发中,MQTT协议因其轻量级和高效性成为设备通信的首选方案。但调试MQTT消息往往依赖命令行工具或第三方平台,效率低下且缺乏灵活性。本文将展示如何利用ThinkPHP6框架配合Workerman/M…...
C++程序发生崩溃闪退后为什么会自动重启?是因为程序中启用了重启管理器,系统感知到程序异常退出后自动重启程序
最近在使用sdkdemo程序测试我们的SDK功能时,发现当我们关闭程序后(程序确实关闭了),程序居然又自动启动起来了!后来运行Debug版本的sdkdemo,在关闭程序时会弹出报错提示框:估计是程序在退出时产…...
老生常谈:聊聊mysql幻读问题?
之前有位小伙伴美团三面,一直被追求「幻读是否被 MySQL 可重复度隔离级别彻底解决了?」之前我也提到过,MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」,但是它很大程度上避免幻读现象(并不是完全解决了࿰…...
minikeyvalue架构解密:为什么它比SeaweedFS更简单高效?
minikeyvalue架构解密:为什么它比SeaweedFS更简单高效? 【免费下载链接】minikeyvalue A distributed key value store in under 1000 lines. Used in production at comma.ai 项目地址: https://gitcode.com/gh_mirrors/mi/minikeyvalue minikey…...
深入理解fibjs Fiber机制:为什么它能提升并发性能
深入理解fibjs Fiber机制:为什么它能提升并发性能 【免费下载链接】fibjs JavaScript on Fiber (built on Chromes V8 JavaScript engine) 项目地址: https://gitcode.com/gh_mirrors/fi/fibjs 在JavaScript的世界中,处理高并发一直是开发者面临的…...
