结构数据和单元数据

目录

结构数据

1、结构矩阵的建立与引用

2、对结构数据的引用

3、结构成员的修改

单元数据

单元矩阵的建立

单元矩阵的引用

单元矩阵的显示

单元矩阵的删除

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 = 

  110 列

    [10]    [12]    'liu'    'wang'    'cai'    [2x2 double]    [2x2 double]    [2x2 double]    []    []

  11 列

    [1x1 struct]

b{1}=[]

b = 

  110 列

    []    [12]    'liu'    'wang'    'cai'    [2x2 double]    [2x2 double]    [2x2 double]    []    []

  11 列

    [1x1 struct]

posted @   morphism  阅读(95)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示