上一次我们学习了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的数据类型学到这里就结束了,喜欢的朋友可以给我点个赞哦!!!
网友评论