二、Matlab 之 cell数组
类型()是cell数组 ,{}是实际类型.结果显示是一致的
对cell型变量元素的引用应当采用大括号作为下标的标示,用小括号作为下标标示时,将只显示该元素的压缩形式。
删除cell中的元素,需要用A(1)=[],若使用A{1}=[]只能将该元素置空不能删除
一、定义
1)直接赋值定义:细胞型变量在定义时需要使用大括号,元素用都好隔开
例: B = {1:4,A,‘abcd’}
- 1
2)使用cell函数,预先为细胞型变量定义空间
例: A = cell(m,n) 定义一个空的m行n列的cell类型
- 1
二、使用
对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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
三、赋值
cell数组的每一个都可以是一个矩阵,或者字符,或者…..
>> A{1,2} = 3:4
A =
[1x4 double] [1x2 double] 'abc'
>> A{1,2}
ans =
3 4
- 1
- 2
- 3
- 4
- 5
- 6
四、删除
>> A
A =
[1x4 double] [1x2 double] 'abc'
>> A(2) = []
A =
[1x4 double] 'abc'
>> A{2} = []
A =
[1x4 double] []
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
五、相关函数
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)
哈哈,,,,如何。。。。。当然了,普通【】构成的矩阵是不能用{ }引用!!!
文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。
原文链接:recclay.blog.csdn.net/article/details/78620415
- 点赞
- 收藏
- 关注作者
评论(0)