1 认识结构数组

结构也是一种数据类型,它的每一个元素都有一个名字。称结构中的元素为域。

类似与C语言中的结构体。

2 创建

两种方法:

(1)用赋值语句创建

(2)用函数 struct 函数进行创建

2.1 赋值语句创建

student.name="Li Ming";
student.addr="123 Street";
student.city='ShangHai';
student.zip="123456";
student.age=23;

结果:

>> studentstudent = 包含以下字段的 struct:name: "Li Ming"addr: "123 Street"city: 'ShangHai'zip: "123456"age: 23

2.2 struct 函数创建

函数 struct 允许用户预分配一个结构数据。它的基本形式如下:

structure_array = struct('field1', var1, 'field2', val2, ...)

举例:

struct_student=struct('name',"Li Ming",'addr',"123 Street",'city','ShangHai','zip',"123456",'age',23);

结果:

>> struct_studentstruct_student = 包含以下字段的 struct:name: "Li Ming"addr: "123 Street"city: 'ShangHai'zip: "123456"age: 23

3 增加删除域

3.1 增加域

如果一个新的域名在结构数组中的任意一个元素中被创建,那么这个域将会增加到数组的所有元素中去。

struct_student=struct('name',"Li Ming",'addr',"123 Street",'city','ShangHai','zip',"123456",'age',23);
%增加域
struct_student.exams=[90,89,65];

结果:

>> struct_studentstruct_student = 包含以下字段的 struct:name: "Li Ming"addr: "123 Street"city: 'ShangHai'zip: "123456"age: 23%增加域exams后
>> struct_studentstruct_student = 包含以下字段的 struct:name: "Li Ming"addr: "123 Street"city: 'ShangHai'zip: "123456"age: 23exams: [90 89 65]

3.2 删除域rmfield()

方法:

struct2 = rmfield(struct_array, 'field') 

示例:

%建立结构体
struct_student=struct('name',"Li Ming",'addr',"123 Street",'city','ShangHai','zip',"123456",'age',23);
%增加域
struct_student.exams=[90,89,65];
%删除域
struct_student_refield=rmfield(struct_student,'zip');

结果:

>> struct_studentstruct_student = 包含以下字段的 struct:name: "Li Ming"addr: "123 Street"city: 'ShangHai'zip: "123456"age: 23exams: [90 89 65]>> struct_student_refieldstruct_student_refield = 包含以下字段的 struct:name: "Li Ming"addr: "123 Street"city: 'ShangHai'age: 23exams: [90 89 65]

4 访问

(1)访问内容

>> struct_studentstruct_student = 包含以下字段的 struct:name: "Li Ming"addr: "123 Street"city: 'ShangHai'zip: "123456"age: 23exams: [90 89 65]
>> struct_student.nameans = "Li Ming">> struct_student.examsans =90    89    65>> struct_student.exams(2)ans =89
>> mean(struct_student.exams)ans =81.3333

(2)访问域名

>> names=fieldnames(student)names =5×1 cell 数组{'name'}{'addr'}{'city'}{'zip' }{'age' }

5 读取函数getfield和修改函数setfield

(1)getfield函数:field_index 和 array_index 是可选择性,array_index 用于创建1×1 结构数组

f = getfield(array,{array_index},'field',{field_index}) 

举例:获取student(1)的zip

>> zip1 = getfield(student,{1},'zip')zip1 = "123456"

(2)setfield 函数:field_index 和array_index 都是可选择性参数,array_index 用于创建1×1 结构数组

f = setfield(array,{array_index},'field',{field_index},value) 

6 应用

建立好几个同学的信息,可以通过再结构名签加下标的方式实现,没有被初始化的域将包含一个空数组,在后面我们可以用赋值语句来初始化这个域:

student.name="Li Ming";
student.addr="123 Street";
student.city='ShangHai';
student.zip="123456";
student.age=23;student(2).name="Li Yang";
student(3).name="Cheng Xiaoxiao";

结果:

>> studentstudent = 包含以下字段的 1×3 struct 数组:nameaddrcityzipage>> student(1)ans = 包含以下字段的 struct:name: "Li Ming"addr: "123 Street"city: 'ShangHai'zip: "123456"age: 23>> student(2)ans = 包含以下字段的 struct:name: "Li Yang"addr: []city: []zip: []age: []>> student(3)ans = 包含以下字段的 struct:name: "Cheng Xiaoxiao"addr: []city: []zip: []age: []

附1 支持struct的函数

Matlab-结构数组相关推荐

  1. matlab单元数组和结构,Matlab使用单元数组和结构数组

    Matlab使用字符串数组.单元数组(cell array)和结构数组 (struct array) 要在MALTAB中实现比较复杂的编程,就不能不用单元数组(cell array)和结构数组(str ...

  2. matlab单元数组和结构,Matlab中单元数组和结构数组

    前言: 单元数组和结构数组是一种新的数据类型,能将不同类型.不同维数的数组组合在一起,从而方便对不同的数据类型方便管理和维护. 如上图所示的2*2矩阵中,分别存储着四种不同的数据类型,分别为数组.字符 ...

  3. matlab 结构(struct)数组,matlab 结构(struct)数组

    4. 3.2 结构数组的操作 MATLAB中专门用于对结构数组的操作的函数并不多,通过 help datatypes获取数据类型列表,可以看到其中的结构数据类型的有关的函数,主要如表4.3.1所示. ...

  4. matlab结构体如何引用,matlab结构体数组引用

    函数来构造 table 对象 o 通过转换函数构造 table 对象 访问 table 中的数据 MATLAB 常用基本数据类型有:整型,浮点型,字符型,函数句柄,元胞数组和 结构体数组.... 结构 ...

  5. matlab 结构体 单元数组,matlab结构体、数组和单元数组类型的创建

    matlab结构体.数组和单元数组类型的创建 @ matlab结构体类型 通过字段赋值创建结构体 创建格式: 结构体名称.字段名称 样例: >> student.name='Alan'; ...

  6. matlab里数组的赋值,arrays – MATLAB结构赋值数组

    我有一系列结构.让我们说 s(1).value,-,s(5).value. 我有一个值向量,让我们说vals = [1 2 3 4 5],我想分配给结构数组.所以用伪代码写我想要:s(:).value ...

  7. matlab mex 矩阵,如何从mex函数访问matlab结构字段中的矩阵?

    如何从mex函数访问matlab结构字段中的矩阵? 我试图弄清楚如何从mex函数访问存储在matlab结构中的字段中的矩阵. 那真是漫长的缠绕...让我解释一下: 我有一个定义如下的matlab结构: ...

  8. 转载:[Matlab]结构体(Struct)

    转载:https://blog.csdn.net/m0_37407756/article/details/70045209 要在MALTAB中实现比较复杂的编程,就不能不用struct类型.而且在MA ...

  9. matlab细胞数组类型建立及操作

    细胞数组结构图: 细胞数组中每个细胞存储一种类型的MATLAB数组,此数组中的数据可以是任何一种MATLAB数据类型或用户自定义的类型,其大小也可以是任意的.相同数组的第二个细胞的类型与大小可以和第一 ...

  10. Matlab 结构体(struct)使用

    转自http://blog.sina.com.cn/s/blog_468651400100c6c0.html 要在MALTAB中实现比较复杂的编程,就不能不用struct类型.而且在 MATLAB中实 ...

最新文章

  1. SUPPORTDIR引用的文件的加入
  2. 程序员如何保持身心健康,做到这几点,远离秃头。
  3. arm-linux-gcc 没有那个文件或目录
  4. 简单方法解决bootstrap3 modal异步加载只一次的问题
  5. 《Android Jetpack》— Android 书籍
  6. php如何触发html,html想触发php函数可以吗?
  7. 详细解析Photoshop10个必学的抠图技巧
  8. 【Java基础】使用NumberFormat 、DecimalFormat进行数字格式化
  9. linux虚拟文件系统proc
  10. 基于ESXi虚拟服务器搭建
  11. camera成像能力-清晰度(Resolution,Sharpen)
  12. Linux vps 主机有免费稳定的推荐吗?
  13. python基本类型关键字_python基本类型关键字_python中的关键字---1(基础数据类)...
  14. python的spider程序下载_Python Spider
  15. 质因数分解,(结果简化版)
  16. 交换机的几种配置方法
  17. 有趣的海盗分金问题(博弈论)
  18. redis incr mysql_redis命令_INCR
  19. Postman使用技巧之三:用Postman生成Request代码
  20. 1951-2021年高考数学试题

热门文章

  1. LWN:在另一个进程的地址空间内执行代码!
  2. 祝贺誉天多位学员通过HCIE-Datacom,喜提誉天助跑奖学金
  3. 专业C2C电子商务平台推荐
  4. 现代作图设计软件用哪四个?
  5. 充分统计量和因子分解定理
  6. 【LVGL】页面管理框架
  7. 大凼山为最高 海拔1591米
  8. .NET面试题(每日三题)
  9. html年月日转换,Js获取年月日及时间转换
  10. 马云成功的九大秘籍与经典语录