Matlab系列教程3-元胞与结构体,包括单元型变量(即元胞)和结构型变量(即结构体)的生成及基本操作。
Matlab中的特殊变量允许用户将不同但相关的数据类型集成一个单一的变量,以便数据的管理,类似C++中的结构体。
单元型变量(元胞)
单元型变量是以“单元”为元素的数组,每个单元可以包含各种类型的数据(如矩阵、字符串),通过{}
创建,通过下标直接引用。
数组类型为cell
,其中每个元素的类型也为cell
。
1 | a = 1:10; |
可以通过cell()
函数预先分配空间,再对其中的元素进行逐个赋值。
指令 | 效果 |
---|---|
cell(n) |
生成阶空单元数组 |
cell(m,n) /cell([m,n]) |
生成阶空单元数组 |
cell(m,n,p,...) /cell([...]) |
生成阶空单元数组 |
cell(size(X)) |
生成与矩阵同维的空单元数组 |
有关单元型变量的函数:可以通过lookfor cell
查找学习
函数 | 说明 |
---|---|
cellfun(func,C) |
对单元型变量中的每个元素依次执行函数func |
celldisp(C) |
在命令行中逐个输出每个元素的具体内容 |
cellplot(C) |
用彩色图形窗口逐个显示元素的内容 |
num2cell(num) |
将数值转换为单元型变量 |
deal |
输入输出处理 |
cell2struct(C) |
将单元型变量转换为结构型变量 |
struct2cell(St) |
将结构型变量转换为单元型变量 |
iscell(X) |
判断是否为单元型变量 |
reshape(X,[...]) |
将中的元素按列取出,再按列重构为[] 规定的维度 |
结构型变量
结构型变量是根据属性名field
组织起来的不同数据类型的集合,每个属性可以包含不同的数据类型,如字符串、矩阵等,类似字典。通过函数struct
来创建,通过属性名来引用属性值,通过索引来引用相应元素。
1 | st = struct('name',{'Tom','Amy'}, 'sex',{'male','female'}, 'age',{18}); |
创建结构型变量时,要求每个属性的长度一致,或者为标量(只有一个值),如上述的name
和sex
长度一致,age
是标量。
有关结构型变量的函数:可以通过lookfor struct
查找学习
函数 | 说明 |
---|---|
fieldnames(st) |
返回结构型变量的所有属性名 |
getfield(st,fieldName) |
返回指定属性名的所有属性值 |
setfield(st,fieldName,value) |
设定指定属性名的值为value |
rmfield(st,fieldName) |
删除指定属性 |
isfield(st,fieldName) |
判断fieldName 是不是st 的属性 |
isstruct(st) |
判断st 是否是结构型变量 |