类型()是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)
哈哈,,,,如何。。。。。当然了,普通【】构成的矩阵是不能用{ }引用!!!
ReCclay 认证博客专家 嵌入式软件开发 机器/深度学习 全栈技术学习者 大家好,我是博主ReCclay,目前处于研究生阶段,就读于电子科技大学,主攻方向为汽车辅助驾驶算法研究。入站以来,凭借坚持与热爱,以博文的方式分享所学,截止目前累计博文数量达800余篇,累计受益人次达130w+次,涉及领域包括但不限于物联网开发、单片机开发、Linux驱动开发、FPGA开发、前/后端软件开发等。在未来我将继续专注于嵌入式相关领域,学习更多的科技知识,输出更高质量的博文。