matlab---之cell与[]

转载:http://blog.csdn.net/CV_YOU/article/details/52873666

           https://zhidao.baidu.com/question/124898262.html    

在matlab中,常常会遇到(),[],和{},这个3种符号怎么区分,怎么用,这里我来总结一下,龚参考。

  • []

首先。[]叫中括号,它用来存储矩阵和向量(vector在C++中也叫容器)
举个例子,a=[1,2,3],是一个向量,这个向量有3个元素,也可以用a=[1 2 3]
eg:
这里写图片描述
对于a=[1 2 3;2 3 4 ;3 4 5],就是一个3*3矩阵
这里写图片描述

  • { }

大括号,用于cell型的数组(就是前面讲的单元数组)的分配或引用。
比如 a{3,3}=‘china’就是建立了一个3*3的单元数组,a(3,3)就是‘china’
比如c={‘china’,’中国’,[1 2 3 4]}运行结果如下
这里写图片描述
比如:A(2,1) = {[1 2 3; 4 5 6]},就是一个2行一列的单元数组,第二行第一列的元素就是[1 2 3;4 5 6]的2*1矩阵

  • ( )

小括号,用于引用数组的元素。
如 X(3)就是X的第三个元素。 X([1 2 3])就是X的头三个元素。
这里用[]建立一个非cell数组。a=[1 2 2],则a(1,2)就是访问的a数组的第一行第2列元素,为2.

最后看一下单元数组和普通数组的关系。
比如我建立了一个单元数组:
a=cell(2,3)
a(1,2)=’china’;%这种写法是错的
a{1,2}=’china’%这种写法才对
因为大括号才代表单元数组赋值,小括号只能是普通数组中的元素
如下
a{1,3}=[1 2 3;2 3 4];
b=a{1,3}(1,3)%这样才能取出上面2*3矩阵中的元素
运行如下
这里写图片描述
这里写图片描述
大家多尝试一下,就会明白这些括号的意思。

关于cell:

cell元包是matlab中提供的一种数据类型,功能强大。
关于cell的创建:
1.跟一般创建举证一样,直接使用C = {A B D E}这种形式,不过这里把"[]"改成了}"{}"
2.使用cell创建cell,C= {C1 C2},这里C1和C2都是cell类型,直接把C1 C2作为一个cell得到的C3是一个1x2的cell数组;使用C3 = [C1 C2],是使用C1和C2的内容来创建cell数组
3.使用cell函数,A=cell(2,2),创建一个空的2x2的cell矩阵.
关于cell的访问:
1.X = C(s)使用这种"()"形式的返回的是cell类型
2.X = C{s}使用这种"{}"形式的返回的是cell中的内容
3.其他的基本上与通常的数组.矩阵访问一样了
4.A{1,1}(2,3:end)访问的是A中的第一个cell里面内容的第2行的第三个元素以后的所有元素
5.A{1,3}.name访问的是A中的A{1,3}cell里面结构的name值
6.cell的图形化显示使用命令cellplot(A)即可
关于cell的删除:
1.cell(1)=[]删除第一个cell,不能使用cell{1}=[],这是把第一个cell内容置空没有删除
>>C4={C1,C2,C3}
C4 =
    {3x2 cell}    {3x3 cell}    {3x1 cell}
>> C4(1)=[]
C4 =
    {3x3 cell}    {3x1 cell}
2.cell(:)=[]删除所有的cell,其他的删除一次类推
>> C4(:)=[]
C4 =
     {}
B={[1;2]}
这就定义了一个cell型的变量B,里面保存的是一个矩阵[1;2]
要引用里面的数据只要在大括号里写上对应的下标即可,如
B{1}
下面我们给B再加个元素,我们可以这样定义
B(2)={'hello'}
也可以利用引用的方法定义
B{2}='hello'
第二种方法比第一种方法更方便所以更常用。
这样B就有两个元素了,B(1)是{[1;2]},B(2)是{'hello'},每个元素都是cell型的(注意和B{1}、B{2}的区别,B{1}是[1;2],B{2}是'hello')
d2 = dir([params.inDir '/*.tif'])
[params.inDir '/*.tif']这相当于一个字符串数组,中间有空格隔开,
输出的内容为params.inDir的内容与/*.tif的连接起来的字符串
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值