Matlab自学笔记三十一:结构数组的创建、索引和预分配内存

1.概念

结构(structure array)是一种具有容器特性的数据类型,它使用称为字段的数据容器对相关数据进行分组,每个字段可以包含任何类型或大小的数据,所有元素都具有相同数量的字段和相同的字段名称。(与元胞数组描述类似,都是容器型数据类型,组织结构不同);

(1)包含1个元素的结构数组,数据结构如下:

(2)包含2个元素的结构数组,数据结构如下:

2.创建方法(2种方法)

(1)方法一:使用圆点(.)运算符,示例:数组名.字段名=字段值,遍历所有字段名赋值;

(2)方法二:使用struct函数创建,示例:数组名=struct(‘字段名’,‘字段值’...),注意字段名和字段值成对排列,字段值未指定时使用默认值为[](默认为空矩阵,与元胞数组相同)。

程序示例如下:

%方法1:(分别列出字段信息,元素名与字段信息用圆点(.)分隔)

student.xingming='zhangsan';  %student是结构数组名,后跟字段名,等号右侧为字段值

student.xuehao='00001';

student.chengji=[1 2 3;4 5 6]

%方法2:(struct函数创建,分别列出每条字段信息,最后赋值给变量名)

stu=struct('xingming','zhangsan','xuehao','00001','chengji',[1 2 3;4 5 6])

3.多元素结构数组

上述是最简单的结构数组,仅包含一个元素,结构数组还可以包括多个元素,创建方法在上面的基础上,继续添加元素即可,添加时使用数组索引。

程序示例如下:

%方法1:(在前面基础上添加)

student.xingming='zhangsan';

student.xuehao='00001';

student.chengji=[1 2 3;4 5 6]

student(2).xingming='lisi';

student(2).xuehao='00002';

student(2).chengji=[7 8 9;1 2 3]

%方法2:

stu=struct('xingming','zhangsan','xuehao','00001','chengji',[1 2 3;4 5 6])

stu(2)=struct('xingming','zhangsan','xuehao','00001','chengji',[1 2 3;4 5 6])

4.预分配内存

结构数组不需要完全连续的内存,但每个字段需要连续的内存,对于大型的结构数组,增加字段的数量或字段中数据的数量可能会导致Out of Memory错误,因此,必要时,结构数组需要初始化和预分配内存,程序示例如下:

st(100,100)=struct('a',[])  %边界思想,设置结构数组的边界元素为字段名为'a'且字段值为[]的结构数组,其他元素值默认填充为空[]

st.a  %索引st的字段'a',返回100个空矩阵

5.判断是否为结构数组

判断一个数组是否为结构数组使用函数isstruct,程序示例如下:

stu=struct('xingming','zhangsan','xuehao','00001','chengji',[1 2 3;4 5 6])

isstruct(stu)  %判断结构数组

6.结构数组的索引

首先介绍一个概念,前面已经说过,结构数组创建的时候使用圆点,使用圆点的访问某一字段的索引叫做字段索引,这是结构数组特有的索引方式,数组索引在视频6Matlab自学笔记六:矩阵索引的概念、下标索引、线性索引、逻辑索引、冒号和end索引、超出索引报错已有讲解,结构数组的索引遵循了数组索引的基本方法,但注意索引和字段索引的配合使用,,程序示例如下:

stu=struct('xingming','zhangsan','xuehao','00001','chengji',[1 2 3;4 5 6])

stu.chengji  %字段索引

stu.chengji(1:3)%2级索引,与元胞数组类似

%多元素结构数组操作

student.chengji  %若不指定哪个元素,则显示所有该字段名的值

student(2).chengji  %指定第2个元素,显示该元素的该字段值

% student.chengji(1:3)  %2个及以上元素的结构数组不能直接使用二级索引,因未指定元素,无法确定索引的结果

student(2).chengji(1:3)

更多相关内容

1.36/Matlab结构数组/很简洁/很实用

14.6 Matlab微分方程数值解法 经典ode45 龙格库塔 数学建模

22.3/Matlab/fmincon/带约束多元函数最小值/解优化问题数学建模

31.11/Matlab函数绘图/隐函数绘图/分段函数作图数学建模

66.15/Matlab有点飘:未定义函数或变量/函数或变量无法识别

36.1 Matlab GUI 界面设计初学者光速入门

45.1 一个实例入门Matlab深度学习|卷积神经网络

Matlab/1.3/调用函数/何须浅碧深红色,自是花中第一流

End

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

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

相关文章

Java锁之舞:性能分析与优化之路

目录 一、同步锁性能分析 (一)性能验证说明 1. 使用同步锁的代码示例 2. 不使用同步锁的代码示例 3. 结果与讨论 (二)案例初步优化分析说明 1. 使用AtomicInteger原子类尝试优化分析 2. 对AtomicInteger原子类进一步优化 …

机器学习面试-常见题目

文章目录 一、框架问题1. 监督学习和无监督学习有什么不同?2. 什么是深度学习,它与机器学习算法之间有什么联系?3. 如何评估机器学习模型的有效性?4. 如何确保模型没有过拟合?5. 什么是核技巧,有什么用处&a…

事件传播机制 与 责任链模式

1、基本概念 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,将请求沿着处理链传递,直到有一个对象能够处理为止。 2、实现的模块有: Handler(处理者):定义一个…

码蹄集部分题目(2024OJ赛19期;贪心集训)

1🐋🐋水温调节(黄金;贪心) 时间限制:1秒 占用内存:128M 🐟题目思路 贪心思路:先将两只水龙头的流速开到最大,温度高了,就把热水的流速降低一个…

Java:缓存行和伪共享

在Java中,缓存行(Cache Line)和伪共享(False Sharing)是与多线程访问共享数据相关的两个重要概念。以下是关于这两个概念的详细解释: 缓存行(Cache Line) 定义:缓存行是…

3.2. 马氏链-马氏链的构造及马氏性(1)

马氏链的构造及马氏性 1. 马氏链的构造本节首先构造马氏链, 即构造活动概率空间: 在序列空间中构造 P x , P μ P_x,P_\mu Px

新人学习笔记之(注释和关键字)

一、注释 1.什么是注释 (1)注释是在程序指定位置添加的说明性信息 (2)简单理解,就是对代码的一种解释 2.注释的分类 (1)单行注释 格式:// 注释信息 (2)多行注释 格式:/*注释信息*/ 3.注释的使用 (1)主要作用:增加代码的阅读性 4.注…

4_机械臂坐标系简介

一、坐标系的标准命名 为了规范起见,有必要给机器人和工作空间专门命名和确定专门的“标准”坐标系。 图3-27为一种典型的工况,机器人抓持某种工具,并把工具末端移动到操作者指定的位置。图3-27所示的5个坐标系就是需要命名的坐标系。这五个坐…

7z及7zip-cpp最高压缩比的免费开源压缩软件

7z介绍 7z是一种主流高效的压缩格式,它拥有极高的压缩比。在计算机科学中,7z是一种可以使用多种压缩算法进行数据压缩的档案格式。该格式最初由7-Zip实现并采用,但这种档案格式是公有的,并且7-Zip软件本身亦在GNU宽通用公共许可证…

MySQL分组聚合

where 与 having 的区别 & order by 假如我们有一张表,表名为 sales,如下所示: ----------------------------------------------------------------------------- | transaction_id | customer_id | product_name | price | quantit…

数据结构之B树的原理与业务场景

B树是一种自平衡的树形数据结构,它能够保持数据有序,并且可以高效地进行查找、顺序访问、插入和删除操作。B树的设计是为了优化磁盘I/O操作,因为它可以减少磁盘访问次数,这在数据库和文件系统中非常有用。 1. B树的原理 节点的出…

PCIe总线-RK3588 PCIe子系统简介(八)

1.PCIe子系统 RK3588 PCIe子系统如下图所示。总共拥有5个PCIe控制器。PCIe30X4(4L)支持RC和EP模式,其他4个仅支持RC模式。ITS port 1连接PCIe30X4(4L)和PCIe30X2(2L)控制器,PCIe30X4(4L)和PCIe30X2(2L)控制器使用PCIe3.0 PIPE PHY。ITS port 0连接PCIe3…

RIP路由附加度量值(华为)

#交换设备 RIP路由附加度量值 RIP(Routing Information Protocol)路由协议中的附加度量值是指在RIP路由原来度量值的基础上所增加的额外度量值,通常以跳数来表示。这个附加度量值可以是正值,也可以是负值,用于影响路…

关于STM32上用HID HOST调鼠标数据的解析

一、前言 关于这章主要是基于我前面的那篇文章 链接: 关于怎么用Cubemx生成的USBHID设备实现读取一体的鼠标键盘设备(改进版) https://blog.csdn.net/qq_29187987/article/details/139535648?spm1001.2014.3001.5501 引用的文章的简介 引用的这篇文…

数据库概述1

数据:描述事物的符号记录称为数据; 包括数字、图片、音频等; 数据库:长期储存在计算机内有组织、可共享的大量数据的集合;数据库中的数据按照一定的数据模型组织、描述和存储,具有较小的数据冗余、较高的数…

STM32学习笔记(一)--时钟树详解

(1)时钟概述;时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波。(时钟相当于单片机的脉搏;STM32本身非常复杂,外设非常的多,为了保持低功耗工作,STM32 的主控默认不…

(一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景

utf8mb4_general_ci 和 utf8mb4_unicode_ci 是 MySQL 数据库中字符集和排序规则。用于指定字符数据的排序和比较规则,确保在数据库中对字符串进行查询和比较时得到正确的结果。 1、utf8mb4_general_ci 是一个较为简单的排序规则。不区分大小写(case-ins…

【Python】深入了解 AdaBoost:自适应提升算法

我们都找到天使了 说好了 心事不能偷藏着 什么都 一起做 幸福得 没话说 把坏脾气变成了好沟通 我们都找到天使了 约好了 负责对方的快乐 阳光下 的山坡 你素描 的以后 怎么抄袭我脑袋 想的 🎵 薛凯琪《找到天使了》 在机器学习的领域中&#x…

算法工程师 | 如何快速 了解,掌握一个算法!脚踏实地,迎着星辰,向前出发 ~

本文是一些碎碎念 希望对正在迈向 算法工程师道路的你 有所裨益 一般来说,代码 中会有很多 算法实现的细节,但论文可能并没有体现,所以能够尝试自己 仔细阅读论文,手动复现代码,基本上来说对 这个 算法 你有了全…