Matlab基础学习----------------元胞数组

来源:互联网 发布:光翼学园网络班有用吗 编辑:程序博客网 时间:2024/05/22 03:27

与架构数组类似,元胞数组也可以存放不同类型不同大小的数据,每个元素称为一个元胞(cell)。

(1)元胞数组的创建

三种方法:直接赋值法,利用函数cell()和利用{}直接创建元胞数组的所有单元。

实例:

%1、直接赋值法%通过赋值语句将值赋到单元数组的一个单元中,每次只能创建一个单元内容;%有两种赋值方法:内容索引法和单元索引法%(1)内容索引法:赋值语句左边用大括号将单元的下表括起来,右边为单元内容%实例:创建一个2*2的元胞数组c{1,1}='this is a cell array';%字符串c{1,2}=[1,2,3,4,5;6,7,8,9,0];%矩阵c{2,1}=[];c{2,2}=4+3*i;%复数class(c)   %判断的数据类型%运行结果:% ans =% cell% % c% c = % %     'this is a cell array'          [2x5 double]%                         []    [4.0000 + 3.0000i]%(2)单元索引法:赋值语句左边用()将单元的下表括起来,右边为单元内容,用{}%实例:创建一个2*2的元胞数组c(1,1)={'this is a cell array'};%字符串c(1,2)={[1,2,3,4,5;6,7,8,9,0]};%矩阵c(2,1)={[]};c(2,2)={4+3*i};%复数%运行结果相同%2、cell()函数创建法%cell()函数可以创建元胞数组,而且还可以指定大小%语法:cell_array=cell(m,n)  创建m*n的元胞数组,定义之后可以用赋值法对其进行赋值%3、用{}直接创建元胞数组%在大括号中依次列出所需创建元胞数组的内容,之间用逗号隔开,行与行之间用分号隔开%实例:创建一个2*3的元胞数组cell={['this','is','s','cellarray']  ,  [1,2]   ,   []   ;   2+3*i   ,   4   ,   eye(4)}class(cell)%运行结果:% cell = %     'thisisscellarray'    [1x2 double]              []%     [2.0000 + 3.0000i]    [         4]    [4x4 double]% % ans =% cell
(2)元胞数组的访问

%元胞数组的访问%方式有两种:%(1)用()将下标括起来访问其单元的结构类型%(2)用{}将下标括起来访问其单元的具体内容%在cell元胞数组的基础上编写实例:cella=cell(1,1)A=cell{1,1}b=cell(1,2)B=cell{1,2}%运行结果% cell = %     'thisisscellarray'    [1x2 double]              []%     [2.0000 + 3.0000i]    [         4]    [4x4 double]% a = %     'thisisscellarray'% A =% thisisscellarray% b = %     [1x2 double]% B =%      1     2%利用celldisp()函数对元胞数组的所有单元内容进行访问celldisp(cell)%结果:% cell{1,1} =% thisisscellarray% cell{2,1} =%  %    2.0000 + 3.0000i% cell{1,2} =%      1     2% cell{2,2} =%      4% cell{1,3} =%      [] % cell{2,3} =%      1     0     0     0%      0     1     0     0%      0     0     1     0%      0     0     0     1
(3)元胞数组的基本操作

包含元胞数组的访问、元胞数组的扩展、缩小、嵌套等操作

%1、元胞数组的扩展%利用赋值法进行扩展实例cellcell{3,2}=['这是扩展内容']   %自动扩展为3*3阵列,未赋值的部分为[]% %运行结果:% cell = %     'thisisscellarray'    [1x2 double]              []%     [2.0000 + 3.0000i]    [         4]    [4x4 double]% cell = %     'thisisscellarray'    [1x2 double]              []%     [2.0000 + 3.0000i]    [         4]    [4x4 double]%                    []    '这是扩展内容'                  []%2、元胞数组的缩小%通过对要删除的单元赋空值的方式来删除数组的行或者列%语法:%(1)删除行:cellname(行号,:)=[]%(1)删除列:cellname(:,列号)=[]%实例cell(2,:)=[]   %删除第二行cell(:,1)=[]   %再删除第一列%结果:% cell = %     'thisisscellarray'    [1x2 double]    []%                     []    '这是扩展内容'        []% cell = %     [1x2 double]    []%     '这是扩展内容'        []%3、元胞数组的嵌套%元胞数组的元胞中包含其他的元胞数,称为嵌套元胞数组,没有嵌套结构的元胞则称为页元胞。%使用嵌套的大括号或cell函数,或直接用赋值表达式,都可以创建嵌套单元数组,%另外还可以访问嵌套元胞数组的子数组、元胞或元胞的元素。%实例a=cell(2,2);a{1,1}=12;a{1,2}{1,1}=[1,2];%元胞数组嵌套a{2,1}='元胞数组嵌套';a{2,2}=[1,2,3;4,5,6]cellplot(a)   %画出单元阵列的结构图%结果:% a = %     [    12]    {1x1 cell  }%     '元胞数组嵌套'    [2x3 double]

(4)元胞数组的操作函数

celldisp()显示单元阵列的内容

cellplot()画出单元阵列的结构图

%reshape()改变元胞数组的形状reshape(a,1,4) %在上面例子的基础上将元胞数组a由2*2改为1*4%结果:% ans = %    [12]    '元胞数组嵌套'    {1x1 cell}    [2x3 double]%cell2struct()将元胞数组转化为架构数组%num2cell()将数字矩阵转化为元胞数组num=[1,2,3;4,5,6];cell_num=num2cell(num)  %数字矩阵转化为元胞数组class(cell_num)%判断类型iscell(cell_num)%判断是否是元胞数组%运行结果:% cell_num = % %     [1]    [2]    [3]%     [4]    [5]    [6]% ans =% cell% ans =      1%cellstr()将二维字符数组转化成字符串单元阵列S = ['abc '; 'defg'; 'hi  '];c = cellstr(S)%结果% c = %     'abc'%     'defg'%     'hi'% % class(c)% ans =% cell%char()将字符串单元阵列转化为相应的字符数组


1 0
原创粉丝点击