目录
结构体数组(struct)
结构体类型数据把不同的数据组成一个逻辑上的整体。
结构体的建立如下:
>> stu(1).name='beixifen';stu(1).class=12;stu(1).array=[1 2 3];
>> stu(2).name='abc';stu(2).class=13;stu(2).array=[1 2 3;4 5 6];
%由于加了分号,下面的内容不会显示,为了方便说明,这里显示出来
stu =
包含以下字段的 1×2 struct 数组:
name
class
array
这样便建立了一个叫做stu的结构体(数组)变量,他含有两个成员,每个成员有三个变量。
结构体使用点 . 引用成员的变量,如下:
>> stu(1).name
ans =
'beixifen'
>> stu(1)
ans =
包含以下字段的 struct:
name: 'beixifen'
class: 12
array: [1 2 3]
结构体数组的添加与删除
>> stu(3).name='guapi' %添加一个stu(3)
stu =
包含以下字段的 1×3 struct 数组:
name
class
array
>> stu(3)=[] %使用空数组[],将stu(3)删除
stu =
包含以下字段的 1×2 struct 数组:
name
class
array
这样就可以添加第三个结构体成员。
结构体成员的添加与删除( 删除要用rmfield函数)
>> stu(1).grade=59 %结构体成员的添加
stu =
包含以下字段的 1×2 struct 数组:
name
class
array
grade
>> stu=rmfield(stu,'grade') %结构体成员的删除
stu =
包含以下字段的 1×2 struct 数组:
name
class
array
元胞数组(cell)
在一些MATLAB书中也把它叫做单元数组。它与结构体数组类似,是不同类型的变量组成的整体。在结构体中,每个变量有自己的名字,我们就可以使用他的名字来找到我们需要的变量。而元胞数组不同,它本身是一个矩阵,他的元素可以是不同类型的数据,且没有名字。
元胞数组可以用大括号整体定义{},例如:
>> stu={'beixifen',12,[1 2;3 4];'guapi',14,[3 4;5 6]} %其中的逗号可以用空格代替
stu =
2×3 cell 数组
{'beixifen'} {[12]} {2×2 double}
{'guapi' } {[14]} {2×2 double}
也可以各元素分开定义,例如:
>> a(1,1)={'beixifen'},a(1,2)={59} %第一种方式
a =
1×2 cell 数组
{'beixifen'} {[59]}
>> a{1,1}='beixifen',a{1,2}=59% 第二种方式
a =
1×2 cell 数组
{'beixifen'} {[59]}
元胞数组的引用
引用元胞数组的内容要用{},这个是不同于一般矩阵引用采用()的方式。
>> a{1,2} %使用{}引用
ans =
59
>> a(1,2) %使用()引用
ans =
1×1 cell 数组
{[59]}
元胞数组元素的删除
>> a(2)=[] %使用空数组[]
a =
1×1 cell 数组
{'beixifen'}
需要注意的是,当一个多维的数组某一个元素被删除后,他将变成一个行向量。
逻辑数据的简单使用
逻辑数组与字符串
>> str='beixifen'
str =
'beixifen'
>> str=='b' %将b与字符串逐个比较,相同返回1,否则返回0
ans =
1×8 logical 数组
1 0 0 0 0 0 0 0
%%逻辑数组可以当作索引,如下
>>lgc=logical([1 0 0 1 0 1 0 0]) %逻辑数组的定义
lgc =
1×8 logical 数组
1 0 0 1 0 1 0 0
>> str(lgc) %把逻辑宿主当作索引
ans =
'bxf'
MATLAB数据类型(1)链接:
https://blog.youkuaiyun.com/Bei_xifen/article/details/82765251