结构数据和单元数据
目录
MATLAB中的结构数据和单元数据类似于C语言中的结构体类型,将不同的数据集成到一个单一的变量中,使得大量的相关数据的处理和引用变得简单、方便。
结构数据
结构数据类型把一组类型不同而逻辑相关的数据组成一个有机的整体,以便管理和引用。
1、结构矩阵的建立与引用
建立一个结构矩阵可以采用给结构矩阵元素的成员赋值的方法,
结构矩阵元素 . 成员名=表达式
>> a(1).x1=10; a(1).x2='liu';a(1).x3=[11,21;34,78];
>> a(2).x1=12; a(2).x2='wang'; a(2).x3=[23,191;27,578];
>> a(3).x1=14; a(3).x2='cai'; a(3).x3=[13.890;67,231];
上面的结构矩阵就包含了3个元素(a(1)、a(2)、a(3)),每个元素又包含3个成员(x1、x2、x3)
与C语言类似的,这里我们的成员也可以是结构数据
>> a(2).x1.x11=90; a(2).x1.x12=12; a(2).x1.x13=30;
此时成员 a(2).x1又含有3个成员的结构数据。
2、对结构数据的引用
可以引用其成员、元素、结构变量。
引用结果:(1)引用结构矩阵元素的成员时,显示其值。
(2)引用结构矩阵元素时,显示成员名和他的值,但如果成员是矩阵时,不显示其具体内容,只显示成员矩阵的大小参数。
b(1).x1=10; b(1).x2='liu' ; b(1).x3=[11,21;34,78];
b(2).x1=12; b(2).x2='wang' ; b(2).x3=[34,191;38,584];
b(3).x1=14; b(3).x2='cai'; b(3).x3=[13.890;67,231];
b(2)
ans =
x1: 12
x2: 'wang'
x3: [2x2 double]
b(1).x3
ans =
11 21
34 78
b
b =
1x3 struct array with fields:
x1
x2
x3
3、结构成员的修改
可以根据需要增加或删除结构的成员。
增加:可以定义一个新的成员,使用赋值语句给他赋确定的值。
注:没赋值的位置为空矩阵。
b(1).x4='43535';
b(1)
ans =
x1: 10
x2: 'liu'
x3: [2x2 double]
x4: '43535'
b(2)
ans =
x1: 12
x2: 'wang'
x3: [2x2 double]
x4: []
b(3)
ans =
x1: 14
x2: 'cai'
x3: [2x2 double]
x4: []
b(4)
索引超出矩阵维度。
b(4).x1=17;
b(4).x5='242424ssdf';
b(1)
ans =
x1: 10
x2: 'liu'
x3: [2x2 double]
x4: '43535'
x5: []
b(4)
ans =
x1: 17
x2: []
x3: []
x4: []
x5: '242424ssdf'
b =
1x4 struct array with fields:
x1
x2
x3
x4
x5
删除:可以使用refield函数来完成。例如要删掉成员x4
b=rmfield(b,'x4')
b =
1x4 struct array with fields:
x1
x2
x3
x5
b(1)
ans =
x1: 10
x2: 'liu'
x3: [2x2 double]
x5: []
单元数据
单元矩阵的各个元素是不同类型的数据
单元矩阵的建立
与一般矩阵相似,只是矩阵的元素用大括号括起来。
b={10,'liu',[11,21;34,78];12,'wang',[34,191;38,584];14,'cai',[13.890;67,231]}
单元矩阵的引用
用大括号下标的形式引用单元矩阵的元素
b{2,3}
ans =
34 191
38 584
单元矩阵的元素可以是结构或单元数据。
例:先建立结构变量y,给上面的单元矩阵b的元素b{3,4}赋值
y.x1=34;y.x2=56;
b{3,4}=y;
b =
[10] 'liu' [2x2 double] []
[12] 'wang' [2x2 double] []
[14] 'cai' [2x2 double] [1x1 struct]
单元矩阵的显示
可以使用celldisp函数显示整个单元矩阵
celldisp(b)
b{1,1} =
10
b{2,1} =
12
b{3,1} =
14
b{1,2} =
liu
b{2,2} =
wang
b{3,2} =
cai
b{1,3} =
11 21
34 78
b{2,3} =
34 191
27 578
b{3,3} =
13 890
67 231
b{1,4} =
[]
b{2,4} =
[]
b{3,4} =
x1: 34
x2: 56
单元矩阵的删除
可以用空矩阵来删除某些元素,注意矩阵元素可以用序号来引用。
需要注意的是;b(3)和b{3}的不同,前者是将单元矩阵的第三个元素删除,而后者只是置为空矩阵,而不是删除它。
前者被删除后,b变成行向量。
b{1,4} =
[]
b{2,4} =
[]
b{3,4} =
x1: 34
x2: 56
b =
[10] 'liu' [2x2 double] []
[12] 'wang' [2x2 double] []
[14] 'cai' [2x2 double] [1x1 struct]
b(3)=[]
b =
1 至 10 列
[10] [12] 'liu' 'wang' 'cai' [2x2 double] [2x2 double] [2x2 double] [] []
11 列
[1x1 struct]
b{1}=[]
b =
1 至 10 列
[] [12] 'liu' 'wang' 'cai' [2x2 double] [2x2 double] [2x2 double] [] []
11 列
[1x1 struct]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律