发现matalb中的cell类型

matlab中的cell类型

 引用自http://cache.baidu.com/c?m=9d78d513d99c12e906bec4690d678631470a97624cc0a11768a3915fe5664c303172a4fb792d4a4295876b6672b25406b1e7360567507be1dcdf883d8ce6cd3538fe25230318913710c46aabdc3653d656e159e9ae04b7e4ad678ef59484804951c1545679d3a68f5807139d3efb4533b0a59f4e430b1be9fa3012a51f2877&p=9b6fd415d9c040a91ab7c7710e108521&user=baidu&fm=sc&query=matlab+cell%C0%E0%D0%CD&qid=84688b5504dc620b&p1=2

如果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单元时要用{},再引用矩阵的某个数据就要用()了。

 

例子

若定义Nx = {-1, 1, 0, 0, -1, -1, 1,  1} 代表了一行八列的八个单元

Nx(1)显示第一个单元 [-1]

Nx{1}显示第一个单元里的数值-1

而Nx = {[-1, 1, 0, 0, -1, -1, 1,  1]}则代表一个单元里有一个矩阵

(有[]就代表矩阵)

若Nx = {{-1}, {1}, {0}, {0}, {-1}, {-1}, {1},  {1}]定义了嵌套的八个单元

不能用Nx(1)查看数据了

只能用Nx{1}或者Nx{1}(1)查看第一个单元的嵌套单元 显示[-1]

用Nx{1}{1}查看第一个单元的嵌套单元中的数据 -1

 

cell单元中的每个单元都是独立的,可以分别存储不同大小的矩阵或不同类型的数据。

这个特性很有用处

posted on 2012-09-19 10:40  戴高远  阅读(287)  评论(0编辑  收藏  举报

导航