cell函数总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

cell函数总结
元胞数组:
元胞数组是MATLAB的⼀种特殊数据类型,可以将元胞数组看做⼀种⽆所不包的通⽤矩阵,或者叫做⼴义矩阵。

组成元胞数组的元素可以是任何⼀种数据类型的常数或者常量,每⼀个元素也可以具有不同的尺⼨和内存占⽤空间,每⼀个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。

和⼀般的数值矩阵⼀样,元胞数组的内存空间也是动态分配的。

关于cell的创建:
1.跟⼀般创建举证⼀样,直接使⽤C = {A B D E}这种形式,不过这⾥把"[]"改成了}"{}"
2.使⽤cell创建cell,C= {C1 C2},这⾥C1和C2都是cell类型,直接把C1 C2作为⼀个cell得到的C3是⼀个1x2的cell数组;使⽤C3 = [C1 C2],是使⽤C1和C2的内容来创建cell数组
3.使⽤cell函数,A=cell(2,2),创建⼀个空的2x2的cell矩阵.
⽤cell函数创建元胞数组,创建的数组为空元胞。

cell函数创建空元胞数组的主要⽬的是为数组预先分配连续的存储空间,节约内存占⽤,提⾼执⾏效率。

关于cell的访问:
1.X = C(s)使⽤这种"()"形式的返回的是cell类型
2.X = C{s}使⽤这种"{}"形式的返回的是cell中的内容
3.其他的基本上与通常的数组.矩阵访问⼀样了
4.A{1,1}(2,3:end)访问的是A中的第⼀个cell⾥⾯内容的第2⾏的第三个元素以后的所有元素
5.A{1,3}.name访问的是A中的A{1,3}cell⾥⾯结构的name值
6.cell的图形化显⽰使⽤命令cellplot(A)即可
元胞数组的数据获得:
从元胞数组中读取数据,可保存为⼀个标准的数组或⼀个新的单元数组,或取出数组进⾏计算。

元胞数组中数据的访问,可通过元胞内容的下标进⾏,⽤元胞数组名加⼤括号{}。

⼤括号中数值表⽰元胞的下标。

如a{1,2}表⽰元胞数组中第⼀⾏第⼆列的元胞。

>> a={20,'matlab';ones(2,3),1:3}
a =
[ 20] 'matlab'
[2x3 double] [1x3 double]
>> str=a(1,2)
str =
'matlab'
>> class(str)
ans =
cell
>> str=a{1,2}
str =
matlab
>> class(str)
ans =
char
()和{}有着本质的区别,⼤括号⽤于表⽰元胞的内容,⼩括号表⽰指定的元胞。

a =
[ 20] 'matlab'
[2x3 double] [1x3 double]
>> a{2,1}(2,2)
ans =
0.9134
>> a{2,1}(2,3)
ans =
0.0975
>> a{1,2}(2)
ans =
a
使⽤元胞的下标,可将⼀个元胞数组的⼦集赋值给另⼀个变量,创建新的元胞数组。

>> a=[{1},{2},{3};{4},{5},{6};{7},{8},{9}]
a =
[1] [2] [3]
[4] [5] [6]
[7] [8] [9]
>> b=a(2:3,2:3)
b =
[5] [6]
[8] [9]
>> c=a(1:3,2:3)
c =
[2] [3]
[5] [6]
[8] [9]
本例使⽤元胞下标的⽅式创建了新的元胞数组b和c,通过结果看出b和c就是元胞数组a的⼀部分。

关于cell的删除和重塑:
1.cell(1)=[]删除第⼀个cell,不能使⽤cell{1}=[],这是把第⼀个cell内容置空没有删除
>>C4={C1,C2,C3}
C4 =
{3x2 cell} {3x3 cell} {3x1 cell}
>> C4(1)=[]
C4 =
{3x3 cell} {3x1 cell}
2.cell(:)=[]删除所有的cell,其他的删除⼀次类推
>> C4(:)=[]
C4 =
{}
3.使⽤reshape重新reshape cell arrays
>> A={1,2,3}
A =
[1] [2] [3]
>> B = reshape(A, 1, 3);
>> B = reshape(A, 3, 1);
>> B = reshape(A, 2, 6);
Error using ==> reshape
To RESHAPE the number of elements must not change.
使⽤reshape需要保证前后调整后的元素个数⼀致,否则会报错
元胞数组中的操作函数
cell:创建空的元胞数组
cellfun:为元胞数组的每个元胞执⾏指定的函数
celldisp:显⽰所有元胞的内容
cellplot:利⽤图形⽅式显⽰元胞数组
cell2mat:将元胞数组转变成为普通的矩阵
mat2cell:将数值矩阵转变成为元胞数组
num2cell:将数值数组转变成为元胞数组
deal:将输⼊参数赋值给输出
cell2struct:将元胞数组转变成为结构
struct2cell:将结构转变为元胞数组
iscell:判断输⼊是否为元胞数组
>> a={20,'matlab',3-7i;ones(2,3),1:3,0}
a =
[ 20] 'matlab' [3.0000 - 7.0000i]
[2x3 double] [1x3 double] [ 0]
>> b=cellfun('isreal',a)
b =
1 1 0
1 1 1
>> c=cellfun('length',a)
c =
1 6 1
3 3 1
>> d=cellfun('isclass',a,'double')
d =
1 0 1
1 1 1
(函数的应⽤)
cellfun函数的主要功能是对元胞数组的元素(元胞)分别指定不同的函数,不过,能够在cellfun函数中使⽤的函数ushuliang是有限的。

能在cellfun中使⽤的函数:
isempty:若元胞元素为空,则返回逻辑真
islogical:若元胞元素为逻辑类型,则返回逻辑真
isreal:若元胞元素为实数,则返回逻辑真
length:元胞元素的长度
ndims:元胞元素的维数
prodofsize:元胞元素包含的元素个数
元胞数组的嵌套
元胞数组的元胞中包含其他的元胞数,称为嵌套元胞数组,没有嵌套结构的元胞则称为页元胞。

使⽤嵌套的⼤括号或cell函数,或直接⽤赋值表达式,都可以创建嵌套单元数组,另外还可以访问嵌套元胞数组的⼦数组、元胞或元胞的元素。

>> a=cell(1,2)
a =
[] []
>> a(1,2)={cell(2,2)}
a =
[] {2x2 cell}
>> a(1,1)={magic(3)};
a{1,2}(1,1)={[1 2 3;4 5 6;7 8 9]};
a{1,2}(2,1)={[2-i;4+7i]};
a{1,2}(2,2)={cell(1,2)};
a{1,2}{2,2}(2)={5};
>> cellplot(a)。

相关文档
最新文档