抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Matlab系列教程3-元胞与结构体,包括单元型变量(即元胞)和结构型变量(即结构体)的生成及基本操作。

Matlab中的特殊变量允许用户将不同但相关的数据类型集成一个单一的变量,以便数据的管理,类似C++中的结构体。

单元型变量(元胞)

单元型变量是以“单元”为元素的数组,每个单元可以包含各种类型的数据(如矩阵、字符串),通过{}创建,通过下标直接引用。

数组类型为cell,其中每个元素的类型也为cell

1
2
3
4
5
a = 1:10;
b = 'test';
c = [1+2i,1
1,1+2i];
ce = {a, b, c};

可以通过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
2
3
4
st = struct('name',{'Tom','Amy'}, 'sex',{'male','female'}, 'age',{18});
st(1); % 每个属性的第一个值 name:'Tom', sex:'male', age:18
st.sex; % 所有的sex属性 ans='male', ans='female'
st(2).name; % name属性的第二个值 ans='Amy'

创建结构型变量时,要求每个属性的长度一致,或者为标量(只有一个值),如上述的namesex长度一致,age是标量。

有关结构型变量的函数:可以通过lookfor struct查找学习

函数 说明
fieldnames(st) 返回结构型变量的所有属性名
getfield(st,fieldName) 返回指定属性名的所有属性值
setfield(st,fieldName,value) 设定指定属性名的值为value
rmfield(st,fieldName) 删除指定属性
isfield(st,fieldName) 判断fieldName是不是st的属性
isstruct(st) 判断st是否是结构型变量

评论