您的位置:首页 > 编程语言 > MATLAB

二、Matlab 之 cell数组

2017-11-23 23:58 393 查看
类型()是cell数组 ,{}是实际类型.结果显示是一致的

对cell型变量元素的引用应当采用大括号作为下标的标示,用小括号作为下标标示时,将只显示该元素的压缩形式。

删除cell中的元素,需要用A(1)=[],若使用A{1}=[]只能将该元素置空不能删除

一、定义

1)直接赋值定义:细胞型变量在定义时需要使用大括号,元素用都好隔开

例: B = {1:4,A,‘abcd’}


2)使用cell函数,预先为细胞型变量定义空间

例: A = cell(m,n) 定义一个空的m行n列的cell类型


二、使用

对cell型变量元素的引用应当采用大括号作为下标的标示, 用小括号作为下标标示时,将只显示该元素的压缩形式。

A = {1:4,2.5,‘abc’};
>> A

A =

[1x4 double] [2.5000] 'abc'

>> A(1,1)

ans =

[1x4 double]
>>  A{1,1}

ans =
2 3 4
>> A(1,2)

ans =

[2.5000]

>> A{1,2}

ans =

2.5000
>>  A(1,3)

ans =

'abc'
>> A{1,3}

ans =

abc
>> A{1,1}(2)

ans =

2


三、赋值

cell数组的每一个都可以是一个矩阵,或者字符,或者…..

>> A{1,2} = 3:4
A =
[1x4 double] [1x2 double] 'abc'
>>  A{1,2}
ans =
3 4


四、删除

>> A
A =

[1x4 double] [1x2 double] 'abc'

>> A(2) =  []
A =

[1x4 double] 'abc'

>> A{2} = []
A =

[1x4 double] []


五、相关函数

cellplot(A)

cell(m,n) 创建一个m行n列的细胞型变量

cellfun(‘fun’,A)对细胞型变量A作用fun函数,fun可以为isreal,isempty,length,islogical,ndims等

celldisp(A) 完全显示细胞型变量的内容

cellplot(A) 用图形显示细胞型变量的内容

num2cell将数值数组转换为细胞型变量 deal 输入输出处理

cell2struct 将细胞型变量转换为结构型变量 、

struct2cell将结构型变量转换为细胞型变量

iscell 判断是否为细胞型变量

reshape 改变细胞型数组的结构

——————–分割线———————————————–

刚学matlab,突然就发现这个东西了,首先特别高兴。因为“慢下来则意味着成长”。有了厚积,才能有薄发。

【】、{} 以及 ()

估计是每个人初学者都绕不过的问题,很幸运。我感觉是戳到matlab的重点(maybe)。。。。

【】呢就是来新建向量和矩阵的!非cell类型!、

{} 主要就是cell类型的使用,引用具体内容!还可以用于cell的赋值。

() 一是用在矩阵的下标。如果是cell类型的,则是压缩后的cell。。

看例子?。。

构建一个非cell矩阵

A = 【1 2 3】 %中括号构建一个非cell的矩阵。然后A(1) = 1,(当然写A([1]) =

1也是可以的!)(关于元素访问可以戳这里详细

其实A(1,1) = 1。。。那么同样的道理,A(2) = A(1,2)….(有没有对列优先这个概念又有了深一层的体会哈。。)

关于{}的用法

其实上面cell的学习中已经说到了,前后呼应。。哈哈哈。。。

那再举个例子也无妨。。。

Eg: A = {1:4, 2.5, ‘hello’}

如果要引用cell的具体内容就可以这样,,,,A{1}=A{1,1} = 2.5(因为就一行嘛,直接写也无妨!)

还有就是赋值,A{1,2} = 3:4 这样2.5就变成了矩阵[3,4]

emmmm,,,,,,其实赋值还可以这样操作。。。。

A(1,2) = [{3:4}]

这样也行的,,,思路也很简单哈,,,你想。。。小括号是压缩后的数据,不就相当于一个笼统意义上的矩阵嘛!我们在矩阵里面cell类型的具体数值不就行了。。。。

当然了,,这个操作确实有点骚,还是第一种好记,也好理解。。。

()的操作

其实上面两个的使用,就是在使用(),因为()是引用。。。

综合起来还有更骚的。。。。

eg:

A = 【1 2 3】

B = {A A}

B(1) 是一个cell类型的矩阵 – 其实是A矩阵,

B{1} 是cell矩阵中的内容 – 其实是A矩阵中的内容。

A是矩阵,我们当然就可对矩阵中的单个元素进行操作,比如B{1}(1,2) = 2 – 就是取A矩阵中的第二个元素2。。。

加入再嵌套一层呢?

C = { B B }

再对A中的第二个元素进行操作就可以这样

C{1}{1}(1,2)

哈哈,,,,如何。。。。。当然了,普通【】构成的矩阵是不能用{ }引用!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: