
(1)元胞数组的创建
>>a={'matlab',20ones(2,3),1:10}
a =
'matlab'[ 20]
[2x3 double][1x10 double]
>>b=[{'matlab'},{20}{ones(2,3)},{1:10}]
b =
'matlab'[ 20]
[2x3 double][1x10 double]
>>c={10}
c =
[10]
>>c(1,2)={2}
c =
[10][2]
>>c(2,2)={5}
c =
[10][2]
[][5]
>>isequal(a,b)
ans =
1
>>whos
Name SizeBytes Class Attributes
a 2x2 388 cell
ans 1x1 1 logical
b 2x2 388 cell
c 2x2 208 cell
用cell函数创建元胞数组,创建的数组为空元胞。cell函数创建空元胞数组的主要目的是为数组预先分配连续的存储空间,节约内存占用,提高执行效率。
>>a=cell(1)
a =
{[]}
>>b=cell(1,2)
b =
[] []
>>c=cell(3,3)
c =
[] [] []
[] [] []
[] [] []
>>d=cell(2,2,2)
d(:,:,1) =
[] []
[] []
d(:,:,2) =
[] []
[] []
>>whos
Name Size Bytes Class Attributes
a 1x1 4 cell
ans 1x1 1 logical
b 1x2 8 cell
c 3x3 36 cell
d 2x2x2 32 cell
(2)元胞数组的数据获得
从元胞数组中读取数据,可保存为一个标准的数组或一个新的单元数组,或取出数组进行计算。元胞数组中数据的访问,可通过元胞内容的下标进行,用元胞数组名加大括号{}。大括号中数值表示元胞的下标。如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的一部分。
(3)元胞数组的删除和重塑
要删除单元数组中的行或列,可以用冒号表示单元数组中的行或列,然后对其赋一个空矩阵即可。
a={20,'matlab'ones(2,3),1:3}
a =
[20]'matlab'
[2x3 double][1x3 double]
>>a(1,:)=[]
a =
[2x3 double][1x3 double]
>>a={20,'matlab'ones(2,3),1:3}
>>a{1}=[]
a =
[]'matlab'
[2x3 double][1x3 double]
>>a(1)=[]
a =
[2x3 double]'matlab'[1x3 double]
>>a(2)=[]
a =
[2x3 double][1x3 double]
>>a(1,2)=[]
??? A null assignment can have only one non-colon index.
>>a(1)=[]
a =
[1x3 double]
元宝数组和其他数组一样,也可以通过reshape函数改变形状,改变后的元胞数组与原元胞数组的元素个数相同,不能通过改变形状来添加或删除元胞数组中的元素。
>>a=cell(4,4)
a =
[] [] [] []
[] [] [] []
[] [] [] []
[] [] [] []
>>size(a)
ans =
4 4
>>b=reshape(a,2,8)
b =
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
>>size(b)
ans =
2 8
(5)元胞数组中的 *** 作函数
cell:创建空的元胞数组
cellfun:为元胞数组的每个元胞执行指定的函数
celldisp:显示所有元胞的内容
cellplot:利用图形方式显示元胞数组
cell2mat:将元胞数组转变成为普通的矩阵
mat2cell:将数值矩阵转变成为元胞数组
num2cell:将数值数组转变成为元胞数组
deal:将输入参数赋值给输出
cell2struct:将元胞数组转变成为结构
struct2cell:将结构转变为元胞数组
iscell:判断输入是否为元胞数组
两种建法:·左标志法左标志法就是把单元标志{}放在左边,例如,创建一个2´2
的单元数组可以使用如下语句:c{1,1}='Cj'c{1,2}=eye(4,4)c{2,1}=@sinc{2,2}=true·
右标志法右标志法就是把标志符放在右边,例如,创建和上面一样的单元数组可以使用如下语句:c(1,1)={'Cj'}c(1,2)={eye(4,4)}c(2,1)={@sin}c(2,2)={true}还可以:c={'cj',eye(4,4)@sin,true}celldisp(c)显示读取c{1,1}中的字符串可以使用如下语句:Str=
c{1,1}删除单元数组c
的第一行可以用如下语句:c(1,:)=[]
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)