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

相关文章

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

一文详解MySQL索引(六张图彻底搞懂)

《一文详解MySQL索引(六张图彻底搞懂)》MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度,:本文主要介绍MySQL索引的相关资料,文中通过代码介绍的... 目录一、什么是索引?为什么需要索引?二、索引该用哪种数据结构?1. 哈希表2. 跳表3. 二叉排序树4.

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2