单元数组中的每个元素都是一个数组,每个单元中可以存放任意数据类型的数据,例如在单元数组中的一个单元可以实数矩阵,也可以是字符串数组,等等。
1.单元数组的构造
1.1左标志
左标志法就是把单元标志符{}放在等号的左端。创建一个2x2的单位数组
>> a{1,2} = '123'
a =
test' '123'
>> a{2,1} = 'haha'
a =
'test' '123'
'haha' []
>> a{2,2} = '456'
a =
'test' '123'
'haha' '456'
1.2右标志
右标志法就是把单元标志符放在等号的右端。例如创建一个2x2的单元数组
>> a(1,1) = {'test'}
a =
'test'
>> a(1,2) = {'123'}
a =
'test' '123'
>> a(2,1) = {'haha'}
a =
'test' '123'
'haha' []
>> a(2,2) = {'456'}
a =
'test' '123'
'haha' '456'
显示单元数组使用的函数是celldisp()
>> celldisp(a)
a{1,1} =
test
a{2,1} =
haha
a{1,2} =
123
a{2,2} =
456
2.单元数组的读取与删除
读取单元数组中的元素,只需要引用它所对应的下标即可,例如读取单元数组第一个元素
>> S = a{1,1}
S =
test
删除单元数组中的一行或者是一列,需要将空矩阵辐值给单元数组中的某一行或者是某一列,例如删除a的第一行:
>> a(1,:) = []
a =
'haha' '456'
3 结构体
结构体在很大程度上与单元数组十分相似。它允许用户将类型不同的数据集中在一个变量中。与单元数组不同的是,结构体是用字段名称对其元素进行索引的,而不是通过数字索引。除此之外,结构体采用点号访问字段中的数据变量,这一点与C语言十分相似。
>> persion.name = 'gl'
>> persion.age = 23
persion =
name: 'gl'
age: 23
我们还可以把这个结构体扩展成1x2的类型。
> > persion(2).name = 'test'
>> persion(2).age = 20
当用户扩展结构体时,matlab会对未指定数据的属性自动赋值为空矩阵。
除了使用赋值语句构造以外,还可以使用struct函数构建结构体。
strarray = struct('field','val1','field','val2',...)