2.7 Matlab学习笔记之数据与运算-结构数据和单元数据

Matlab结构数据和单元数据

从MATLAB 5.0开 始 ,MATLAB 新增加了两种数据类型:结构数据类型和单元数据类型。

这两种数据类型均是将不同的相关数据集成到一个单一的变量中,使得大量的相关数据的处理 与引用变得简单、方便。

一、结构数据

结构数据类型把一组类型不同而逻辑上相关的数据组成一个有机的整体,以便于管理和引用。例如要存储学生的基本信息就可采用结构数据类型。

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=[34,191;27,578];

结构矩阵元素的成员也可以是结构数据。例如:

>>a(2).x1.x11=90;a(2).x1.x12=12;a(2).x1.x13=30;

以上建立的结构矩阵a含有2个元素,每个元素又含有3个成员,成员a(2).x1 又是含有3 个成员的结构数据。

对结构数据的引用,可以引用其成员,也可以引用结构矩阵的元素或结构变量。

>> a(2).x3

ans =

    34   191
    27   578
   
>> a(2)

ans = 

    x1: [1x1 struct]
    x2: 'wang'
    x3: [2x2 double]
    
>> a

a = 

1x2 struct array with fields:

    x1
    x2
    x3
  • 引用结构矩阵元素的成员时,显示其值。

  • 引用结构矩阵元素时,显示成员名和它的值,但成员是矩阵时,不显示其具体内容,只显示成员矩阵大小参数。

  • 引用结构矩阵时,只显示结构矩阵的大小参数和成员名。

2.结构成员的修改

可以根据需要增加或删除结构的成员。例如,要给结构矩阵a增加一个成员x4, 可给a中任意一个元素增加成员x4, 命令如下:

>>a(1).x4='410075';

要删除结构的成员,则可以使用rmfield 函数来完成。

例如,要删除成员x4, 命令如下:

 >>a=rmfield(a,'x4');
二、单元数据

单元数据类型与结构数据类型类似,也是把不同属性的数据放在一个变量中。所不同的是,结构矩阵的各个元素下有成员,每个成员都有自己的名字,对成员的引用如下:

结构矩阵名.成员名

而单元矩阵的各个元素就是不同类型的数据,用带有大括号下标的形式引用单元矩阵元素

建立单元矩阵和一般矩阵相似,只是矩阵元素用大括号括起来。

>> b={10,'liu',[11,21;34,78];12,'wang',[34,191;27,578];...
14,'cai',[13,890;67,231]} 

b = 

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

可以用带有大括号下标的形式引用单元矩阵元素

>> b{3,3}

ans =

    13   890
    67   231

单元矩阵的元素可以是结构或单元数据。例如,先建立结构变量 y, 给上面建立的单元矩阵b的元 素b{3,4}赋值,命令如下:

>> y.x1=34;y.x2=56;
>> b{3,4}=y;

可以使用celldisp 函数来显示整个单元矩阵,如 celldisp(b) 。

>> 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 = 

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

  711[2x2 double]    [2x2 double]    []    []    [1x1 struct]
    
    单元矩阵b的第3个元素被删除后,b 变成行向量。注意,这里是b(3),而不是b{3} 。b{3}=[] 是将b的第3个元素置为空矩阵,而不是删除它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值