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

本文主要是介绍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

这篇关于Matlab自学笔记三十一:结构数组的创建、索引和预分配内存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067798

相关文章

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

Mysql中InnoDB与MyISAM索引差异详解(最新整理)

《Mysql中InnoDB与MyISAM索引差异详解(最新整理)》InnoDB和MyISAM在索引实现和特性上有差异,包括聚集索引、非聚集索引、事务支持、并发控制、覆盖索引、主键约束、外键支持和物理存... 目录1. 索引类型与数据存储方式InnoDBMyISAM2. 事务与并发控制InnoDBMyISAM

StarRocks索引详解(最新整理)

《StarRocks索引详解(最新整理)》StarRocks支持多种索引类型,包括主键索引、前缀索引、Bitmap索引和Bloomfilter索引,这些索引类型适用于不同场景,如唯一性约束、减少索引空... 目录1. 主键索引(Primary Key Index)2. 前缀索引(Prefix Index /

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq