MATLAB中的结构数组
结构数组:
结构是包含一组记录的数据类型,而记录则是存储在相应的字段中。结构的字段可以是任意一种MATLAB数据类型的变量或者对象。结构类型的变量也可以是一维的、二维的或多维的数组。结构数组也称为架构数组。不过,在访问结构类型数据的元素时,需要使用下标配合字段的形式。
可以在一个数组中放置各类的数据,并且一个结构数组还能是另一个结构数组的一部分。相比较而言,比元胞数组更为强大,也更加富于变化。
(1)直接赋值法创建结构数组
>> employee.name='tiger';
>> employee.sex='male';
>> employee.age='24';
>> employee.number='12345';
>> employee
employee =
name: 'tiger'
sex: 'male'
age: '24'
number: '12345'
employee是一种结构。可以容纳更多的元素,可以自由地向结构中加入元素。
>> employee(2).name='lee';
>> employee(2).sex='female';
>> employee(2).age='32';
>> employee(2).number='82356';
>> employee(2)
ans =
name: 'lee'
sex: 'female'
age: '32'
number: '82356'
> employee
employee =
1x2 struct array with fields:
name
sex
age
number
(2)用struct函数创建结构数组
使用struct函数,可以根据指定的字段及其相应的值创建结构体数组。此函数的一般形式为:
str_array=struct('field1',{val1},'field2',{val2}...);
(3)结构数组中的数据获取
使用结构数组索引,能获取结构数组中的任何字段值或字段元素。相似地,可以给任何字段或字段单元赋值。在结构数组名后面添加索引范围,可以获取子数组。
>> list.ID=123;
>> list.sex='male';
>> list.age=25;
>> list
list =
ID: 123
sex: 'male'
age: 25
>> list(2).ID=456;
>> list(2).sex='female';
>> list(2).age=32;;
>> list2=list(1:2)
list2 =
1x2 struct array with fields:
ID
sex
age
>> list2(1)
ans =
ID: 123
sex: 'male'
age: 25
>> str=list2.sex
str =
male
>> ages=[list.age]
ages =
25 32
(4)结构数组中的操作
对于结构的基本操作其实是对结构数组元素包含记录的操作。主要有结构记录数据的访问、字段的增加和删除等。访问结构数组元素包含记录的方法很简单,直接使用结构数组的名臣和字段的名臣以及操作符“.”完成相应的操作即可。不过,在访问结构数组的元素时,可以使用所谓的“动态”字段的形式。
Struct_name.(expression)
>> student=struct('name',{'aaa','bbb'},'age',{23,24},'ID',{001,002},'score',{rand(3)*10,rand(3)*10});
>> student
student =
1x2 struct array with fields:
name
age
ID
score
>> student(2).score
ans =
7.9221 0.3571 6.7874
9.5949 8.4913 7.5774
6.5574 9.3399 7.4313
>> student(1).score(1,:)
ans =
9.6489 9.5717 1.4189
>> student.name
ans =
aaa
ans =
bbb
>> student.('name')
ans =
aaa
ans =
bbb
(5)结构操作函数
struct:创建结构或将其他数据类型转变成结构
fieldnames:获取结构的字段名称
getfield:获取结构的字段数据
setfield:设置结构的字段数据
rmfield:删除结构的指定字段
isfield:判断给定的字符串是否为结构的字段名称
isstruct:判断给定的数据对象是否为结构类型
orderfields:将结构字段排序
(6)结构数组的大小
使用size函数可以获取结构数组或任何结构字段的大小。给定一个结构数组名作为变量,size返回一个数组的维向量。给定array(n).field形式的变量,size函数返回一个包含字段内容大小的向量。
(7)结构数组的嵌套
一个结构字段能包含另外一个结构,甚至是另外的结构数组。一旦创建了一个结构,就可以使用struct函数或赋值语句,在已经存在的结构字段中嵌套结构。
要创建嵌套的的结构有两种方法:一维勇struct函数创建嵌套结构;二是索引嵌套的结构:
struct函数创建嵌套结构:
>> A=struct('data',[1 2 3;4 5 6],'nest',struct('testnum','test','xdata',[7 8 9],'ydata',[10 11 12]))
A =
data: [2x3 double]
nest: [1x1 struct]
添加元素
>> A(2).data=[1 3 3;4 5 5];
>> A.data
ans =
1 2 3
4 5 6
ans =
1 3 3
4 5 5
>> A(2).nest.testnum='test2';
>> A(2).nest.xdata=[4 3 2];
>> A(2).nest.ydata=[6 9 8];
>> A.nest
ans =
testnum: 'test'
xdata: [7 8 9]
ydata: [10 11 12]
ans =
testnum: 'test2'
xdata: [4 3 2]
ydata: [6 9 8]
>>
要索引嵌套的结构,用.标记添加嵌套的字段名。索引表达式中的第一个文本字符串确认结构数组,后面的表达式获取包含其他结构的字段名。
A(1).nest
A(2).nest.xdata
MATLAB中的结构数组的更多相关文章
- matlab中的字符串数组与函数调用
1, matlab中的字符串就是1维字符数组,即如: a = 'dddssd'; b = 'lsde'; c = [a, b]; 当然也可以: c= strcat(a, b); 2, matlab中的 ...
- matlab中元胞数组(cell)转换为矩阵
matlab中元胞数组(cell)转换为矩阵. cell转换为矩阵函数为:cell2mat(c),其中c为待转换的元胞数组: 转化之后的矩阵可能不满足我们对矩阵维数的要求,那么也许还需要下面两个函数: ...
- matlab中的结构体
今天用imfinfo函数 >> K = imfinfo(‘colorbar_copy1.jpg’) K = 包含以下字段的 struct: Filename: 'E:\matlab\col ...
- matlab中reshape 重构数组
来源:https://ww2.mathworks.cn/help/matlab/ref/reshape.html?searchHighlight=reshape&s_tid=doc_srcht ...
- matlab中元胞数组的创建与内容读取
一.创建元胞数组 1.用cell命令创建规格为2*2的空元胞 >> a=cell(2,2) a = [] [] [] [] 2.用大括号"{}"创建元胞数组并赋值 &g ...
- matlab中的数组与矩阵
今天做图像处理时,看到一个矩阵的处理,简要谈谈下面几段代码: 首先是介绍矩阵(说明:在matlab中无是数组还是矩阵都是按列来存储的) 首先是一些特殊矩阵的建立 zeros(m,n)%建立全0矩阵 o ...
- Matlab中的基本数据类型介绍
Matlab中支持的数据类型包括: 逻辑(logical)字符(char)数值(numeric)元胞数组(cell)结构体(structure)表格(table)函数句柄(function handl ...
- 学习笔记8—MATLAB中奇异值处理办法
一.Inf 和 NAN处理 lnf: 无穷大值,可以用islnf或者isfinite函数处理 NAN:不是一个数字,可以用isnan函数来处理 或者: 类似于这种处理 mn(find(mn<= ...
- 使用C# .NET 将结构数组绑定到 Windows 窗体的方法
本任务的内容 概要 要求 设计结构 向数组添加结构实例 将结构成员绑定到窗体控件 提供浏览数组的方式 分步示例 参考 概要 本文介绍如何向 Windows 窗体绑定结构数组. 该示例由一个 Win ...
随机推荐
- mysql触发器的作用及语法
触发器是一种特殊的存储过程,它在插入,删除或改动特定表中的数据时触发运行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力. 数据库触发器有下面的作用: 1.安全性.能够基于数据库的值使用户具有 ...
- SVN/GIT源代码泄露
造成SVN源代码漏洞的主要原因是管理员操作不规范.在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息.但一些网站管理员在发布代码时,不愿意使用‘导出’功能 ...
- Core Motion传感器原始数据
1.访问原始的Motion数据 #import <UIKit/UIKit.h> #import <CoreMotion/CoreMotion.h> @interface Vie ...
- 正则表达式工具类,正则表达式封装,Java正则表达式
正则表达式工具类 正则表达式封装 Java正则表达式 >>>>>>>>>>>>>>>>>>& ...
- dhcp源码编译支持4G上网卡
1. tar xvzf dhcp-4.2.5-P1.tar.gz 2. ./configure --host=arm-linux ac_cv_file__dev_random=yes 3. vi bi ...
- Visual Studio小技巧
换了台电脑后打开解决方案后所有项目都是展开状态,每天工作的第一件事情就是把他们都折起来,感觉好麻烦. 百度了一阵子没找到相关的问题,还一度怀疑是不是我自己的VS有问题. 但是其它解决方案没有这种情况, ...
- CSS权威指南-第三版--读书笔记
第一章:CSS和文档 html是结构化语言,css是样式语言,html主要用来被强大的搜索引擎更好的索引,更好的让一个盲人通过语音浏览器来了解我们的网页,这也就是为什么说html是结构话语言,因为这是 ...
- 无法加载协定为“ServiceReference1.ReportWsSoap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
前言 引用websevice时,有时会出现如下错误: 异常详细信息: System.InvalidOperationException: 无法加载协定为“ServiceReference1.Repor ...
- .NET 统一用户管理 -- 单点登录
单点登录 前言 本篇做为.Net 统一用户管理的系列文章的开山之作,主要说一个单点登录是怎么实现的,以及为啥要统一用户管理. 单点登录(Single Sign On),简称为 SSO,是目前比较流行的 ...
- AngularJs的UI组件ui-Bootstrap-Tooltip
完整案例,参考http://www.cnblogs.com/pilixiami/p/5661600.html <!DOCTYPE html> <html ng-app="u ...