【Matlab数据类型之一:元组】

matlab元组创建、读取、写入、及转化

元组是matlab的数据类型之一,其元胞中可存储文本,数值,矩阵等等不同的数据类型,因此应用较为方便。因此,在采用matlab进行数据处理时,对元组的创建、读取、写入、转化函数的掌握尤为重要,以下对其进行简要介绍。

元组cell的创建

  1. cell(dim):创建空元组。若dim为标量,则创建dim×dim维的空元组;若dim为1×N维的矢量,则创建dim(1)×…dim(N)维的空元组。以下为实例介绍:
    (i) C = cell(2)
    C =
    [] []
    [] []
    (ii) C = cell([2,3,2])
    C(:,:,1) =
    [] [] []
    [] [] []
    C(:,:,2) =
    [] [] []
    [] [] []
  2. cell(dim1,dim2,…dimN):创建dim(1)×…dim(N)维的空元组(与dim为矢量时cell(dim)创建的元组相同)。以下为实例介绍:
    (i) C = cell(2,3,2)
    C(:,:,1) =
    [] [] []
    [] [] []
    C(:,:,2) =
    [] [] []
    [] [] []
  3. C = {…}:通过花括号直接创建元组,其中每个元胞可以为字符串,数值,矩阵等不同数据类型。以下为实例介绍::
    C = {‘cell’,1,11+2i;4,‘one’,‘two’}
    C =
    ‘cell’ [ 1] [11.0000 + 2.0000i]
    [ 4] ‘one’ ‘two’

元组元胞的读取与写入

元组元胞的读取和写入与矩阵类似,但由于元胞数据类型的多样性,在读取和写入时花括号和圆括号需要区别使用。本节以C = {‘cell’,1,11+2i;4,‘one’,‘two’}为例,以花括号{}和圆括号()为区分对元组进行读取和写入:

  1. ():以元胞形式读取或写入元胞
    (i) 读取元胞:A = C(1:2,1:2)
    A =
    ‘cell’ [ 1]
    [ 4] ‘one’
    (ii) 写入元胞:A = {‘read11’,‘read12’;‘read21’,‘read22’}; C(1:2,1:2) = A
    C =
    ‘read11’ ‘read12’ [11.0000 + 2.0000i]
    ‘read21’ ‘read22’ ‘two’
    可以注意到,其中读取或写入的A,其数据类型均为元胞形式。
  2. {}:以字符串或数值形式读取或写入元胞
    (i) 读取元胞:[r11,r21,r12,r22] = C{1:2,1:2}
    r11 =
    cell
    r21 =
    4
    r12 =
    1
    r22 =
    one
    可以注意到,读取的数据类型为字符串或数值,而不是元胞。
    (ii) 写入元胞:A = 12; C{1,1}=12
    C =
    [12] [ 1] [11.0000 + 2.0000i]
    [ 4] ‘one’ ‘two’
    可以注意到,写入的数据A,其数据类型为数值,而不是元胞。

常用的元组转化函数

关于元组的转化函数包括有cell2mat,cell2struct,cell2table,mat2cell,num2cell,struct2cell,table2cell等函数,以下仅介绍数据分析时常用的几个函数:

  1. cell2mat©:当元组中所有元胞具有相同数据类型时,可将元组转化为数组。如例所示:
    (i) 元胞均为字符串:C = {‘r’,‘e’,‘a’,‘d’;‘1’,‘2’,‘3’,‘4’}
    A = cell2mat©
    A =
    read
    1234
    (ii) 元胞均为数字:C = {[1], [2, 3, 4]; [5; 9], [6, 7, 8; 10, 11, 12]}
    A = cell2mat©
    A =
    1 2 3 4
    5 6 7 8
    9 10 11 12
  2. mat2cell():将数组转化为包含不同维元胞的元组
    (i) :C = mat2cell(A,dim1Dist,…,dimNDist),dimnDist(n=1…N)分别表示数组第n维度的划分方式。
    A = cell2mat({[1], [2, 3, 4]; [5; 9], [6, 7, 8; 10, 11, 12]})
    B = mat2cell(A, [2,1], [3,1])
    B =
    [2x3 double] [2x1 double]
    [1x3 double] [ 12]
    (ii):C = mat2cell(A,rowDist)(本质是上个函数)
    A = cell2mat({[1], [2, 3, 4]; [5; 9], [6, 7, 8; 10, 11, 12]})
    B = mat2cell(A, [2,1])
    B =
    [2x4 double]
    [1x4 double]
  3. num2cell():将数组转化为元组
    (i) :C = num2cell(A)
    A = cell2mat({[1], [2, 3, 4]; [5; 9], [6, 7, 8; 10, 11, 12]})
    C = num2cell(A)
    C =
    [1] [ 2] [ 3] [ 4]
    [5] [ 6] [ 7] [ 8]
    [9] [10] [11] [12]
    (ii):C = num2cell(A,dim),dim可以为标量,也可以为矢量,且dim值对应数组A的维度。该函数使得每个元胞dim维度的尺寸等于数组dim维度的尺寸。
    A = cell2mat({[1], [2, 3, 4]; [5; 9], [6, 7, 8; 10, 11, 12]})
    C = num2cell(A,1)
    C =
    Columns 1 through 3
    [3x1 double] [3x1 double] [3x1 double]
    Column 4
    [3x1 double]
    C = num2cell(A,2)
    C =
    [1x4 double]
    [1x4 double]
    [1x4 double]
    C = num2cell(A,[1 2])
    C =
    [3x4 double]

其他

  1. celldisp©:显示元组内容
    C={‘one’,2;3,‘two’}
    celldisp©
    C{1,1} =
    one
    C{2,1} =
    3
    C{1,2} =
    2
    C{2,2} =
    two
  2. cellfun(fun,C1,…,Cn):将函数应用于元组的每个元胞
  3. iscell©:判断输入C是否为元组
  4. iscellstr©:判断输入C是否为元胞为字符串的元组(或空元组)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青草蛋黄派

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值