matlab中cell数组⽤法
cell数组⼀般被叫做元胞数组,它的每个单元可以储存不同的数据类型,可以是数值,字符或矩阵或元胞数组等,类似于学过的c语⾔⾥的结构体
可以直接通过{}类似于矩阵的直接赋值:a={'winter',123,'coming','哈哈'};
也可以通过cell函数预分配内存,再赋值:a=cell(1,4);a={'winter',123,'coming','哈哈'};
与普通矩阵,数组的主要区别在于:通过()访问cell数组时访问到的是cell单元,通过{}访问cell数组时访问到的是cell单元储存的内容,举例如下图所⽰,其他操作基本⼀样。
matlab数组赋值3.cell数组相关的函数
cell:创建空的元胞数组,预分配内存
celldisp:显⽰元胞数组所有内容
cellplot:利⽤图形⽅式显⽰内容(因缺思厅!)
cell2mat:将元胞数组成普通矩阵(要求cell元胞数组的所有内容都必须为相同数据类型,可以为字符,会转化为字符矩阵)
mat2cell:将普通矩阵转化成元胞数组
iscell:判断输⼊是否为元胞数组
cellfun:为cell数组的每个cell单元执⾏指定的函数,fun可以是特殊的函数或者句柄
b={[1,2,1];[2,1,1];[1,1,2]};
c=cellfun(@(x)(mat2str(x)),b,'un',0)
我们知道矩阵及矩阵的删除可以通过[]实现:
元胞数组操作类似但和其赋值⼀样有区别,区别就在于{}和()
a={1,2,3};
a{1}=[];%并不能删除第⼀个cell单元,只是变成空值
a(1)=[];%删除第⼀个单元
a(:)=[];%⼀次性删除所有cell单元
如果p为⼀个数,那么h(1)=p,是没有问题的。
如果p为⼀个向量,那么h(1,:)=p是没有问题的。
如果p是⼀个矩阵的话,上⾯的两种赋值⽅法都是会有错误的。
那么要如何处理呢?
这时就⽤到了cell数据类型了。cell的每个单元都可以存储任何数据,⽐如传递函数等。当然,存储矩阵更是没有问题的了。但是⽤cell数据类型之前,要先初始化。
a=cell(n,m)
那么就把a初始化为⼀个n⾏m列的空cell类型数据。
如何赋值呢?
a{1,1}=rand(5)
那么a的1⾏1列的单元中存储的就是⼀个随机的5×5的⽅阵了。
那么要⽤第⼀个单元中的⽅阵中的某个值呢?
可以如下引⽤:a{1,1}(2,3)
就可以了,引⽤cell单元时要⽤{},再引⽤矩阵的某个数据就要⽤()了。
cell单元中的每个单元都是独⽴的,可以分别存储不同⼤⼩的矩阵或不同类型的数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论