与架构数组类似,元胞数组也可以存放不同类型不同大小的数据,每个元素称为一个元胞(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元胞数组的基础上编写实例: cell a=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、元胞数组的扩展 %利用赋值法进行扩展实例 cell cell{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()将字符串单元阵列转化为相应的字符数组
Matlab基础学习----------------元胞数组
原文地址:http://blog.csdn.net/z1137730824/article/details/39206823