美文网首页IT@程序员猿媛互联网@时事传播读书
Matlab系列 --- Matlab基础 数据类型(二)

Matlab系列 --- Matlab基础 数据类型(二)

作者: 307656af5a04 | 来源:发表于2019-04-21 11:48 被阅读19次

    上一次我们学习了matlab基础数据类型的数值类型、逻辑类型、字符和字符串以及函数句柄,今天呢,我们学习接下来的数据类型。

    一、单元数组类型

    单元数组时一种比较特殊的数据类型,每个元素都以单元的形式存在。在matlab中,采用大括号({})建立单元数组,也可以采用函数cell()来建立单元数组。在获取单元数组的元素时,也采用大括号表示下表。

    建立单元数组实例:

    clear all;
    c={'中国','China';[1 2 3 4 5],100}
    %获取1行1列的元素
    c{1,1}  
    %获取2行1列的元素
    c{2,1} 
     %第2行2列的元素赋值为孔
    c{2,2}=[] 
    

    用函数建立单元数组

    1.函数cell()
    实例:

    clear all;
    %建立2行3列的数组
    c=cell(2,3)          
    c{1,1}=[1:3;3:5]  
    c{2,2}='China'
    c{2,3}='Robin'
    c{2,1}=100
    

    2.函数celldisp()

    %显示单元数组的内容
    clear all;
    c={eye(2),'China';[1:4],100}
    celldisp(c)
    celldisp(c,'mycell')
    

    3.函数cellplot()

    clear all;
    %将单元数组以彩色图形显示
    c={'中国','China';[1:4],100}
    figure;
    out=cellplot(c,'legend') 
    

    实验结果:

    cellplot() 实验结果

    对数组的元素进行添加或者删除

    clear all;
    %建立2行2列的单元数组
    c={'中国','China';[1:4;2:5],10}   
    %单元数组的扩充
    %对2行4列的元素添加值
    c{2,4}=100 
    %第一行元素
    c(1,:) 
    %删除第三列
    c(:,3)=[] 
    d={'北京','Beijing';[],3}
    %单元数组的合并
    e=[c,d] 
    %删除第二行
    e(2,:)=[] 
    

    4.函数iscell()和函数num2cell()

    clear all;
    %矩阵
    a=[2.3 4.5 9.2;3.5,3.2 8.5]   
    %将矩阵转换为单元数组
    c=num2cell(a)       
    %判断是否未单元数组
    %是返回0,      
    iscell(a)  
    iscell(c)
    

    5.函数cell2struct()

    clear all;
    c={'Dr. Zhang',1.80,20110001,[89 90 96]}
    fields={'name','height','num','score'}
    %将数组转换为结构体变量
    s=cell2struct(c,fields,2) 
    

    实验结果:

    函数cell2struct()实验结果

    二、结构体数据类型

    结构体是按照成员变量名组织起来的不同数据类型数据的集合。结构体类似于C语言的结构体数据。每个成员变量用指针操作符"."表示,例如A.name表示结构体变量A的name成员变量。在matlab中结构体类型常用的函数如下所示:

    结构体类型常用的函数

    结构体类型

    • 函数struct()产生结构体变量
    命令行产生结构体变量
    clear all;
    %创建一个结构体
    s1=struct('type',{'big','little'},'color',{'red'},'data',{[1 2 3;2 3 4] [1:4]})
    s1(1)
    s1(2)
    

    实验结果:


    实验结果
    • 函数rmfield()来是删除结构体中的成员变量
      实例:
    clear all;
    %创建一个结构体
    s1=struct('type',{'big','little'},'color',{'red'},'data',{[1 2 3;2 3 4] [1:4]})
    %删除结构体s1种的color并赋值给s2
    s2=rmfield(s1,'color')
    %同时删除结构体s1种的color与type并赋值给s3
    s3=rmfield(s1,{'type','color'})
    

    实验结果:


    函数rmfield()实验结果
    • 函数isstruct()来判断是否为结构体变量

    • 函数isfield()来判断是否为结构体变量的成员变量

    实例:

    clear all;
    %创建一个结构体
    s=struct('one',1,'two',2)
    % 1
    f1=isstruct(s)
    % 1
    f2=isfield(s,'one')
    % 0
    f3=isfield(s,'three')
    % 1   0   0   0
    f4=isfield(s,{'one','pi','Two','three'})
    
    • 函数fieldnames()获得结构体的成员变量名字
    • 函数orderfields(S)按照成员变量的字母顺序排序

    实例:

    clear all;
    %创建一个结构体变量
    s=struct('one',1,'two',2,'three',3,'four',4)
    %获取结构体变量的名称
    f1=fieldnames(s)
    %对结构体变量按字母顺序排序
    f2=orderfields(s)
    
    实验结果
    • 函数getfield()取得存储在结构体中的成员变量的值
      实例:
    clear all;
    s1=struct('one',1,'two',2)
    %获取结构体变量one的值
    f1=getfield(s1,'one')
    s2=struct('name',{'Robin','Tom'},'sex',{'Male','Male'},'score',[87 89 94])
    %获取结构体变量Tom name的值
    f2=getfield(s2,{1,2},'name')
    %得到Tom male 的名字
    f3=s2(1,2).name
    % 获得Tom male 的分数为89
    f4=getfield(s2,{1,2},'score',{2})
    % 获得Tom male 的分数为89
    f5=s2(1,2).score(2)
    
    • 函数setfield()用于给结构体的成员变量设置新值

    实例:

    clear all;
    s1=struct('one',1,'two',2)
    %将结构体变量one 设置为3
    s2=setfield(s1,'one',3)
    s3=struct('name',{'Robin','Tom'},'sex',{'Male','Male'},'score',[87 89 94])
    % 修改Tom的score
    s4=setfield(s2,{1,2},'score',[78 76 99 81])
    s3(1,2).score
    s4(1,2).score
    
    • 函数struct2cell()将结构体变量转换为单元数组
    clear all;
    %建立结构体变量
    s(1).name='Robin';
    s(1).sex='Male';
    s(1).num=20110001;
    s(1).room=203;
    s(2).name='Tom';
    s
    %将结构体变量转换为单元数组
    c=struct2cell(s)
    

    好了,matlab的数据类型学到这里就结束了,喜欢的朋友可以给我点个赞哦!!!

    相关文章

      网友评论

        本文标题:Matlab系列 --- Matlab基础 数据类型(二)

        本文链接:https://www.haomeiwen.com/subject/diirgqtx.html