转自: http://hi.baidu.com/hbwc/blog/item/a89ec511ab669a1bb8127b5c.htm

元胞数组:

元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的内存空间也是动态分配的。

(1)元胞数组的创建

>> a={'matlab',20;ones(2,3),1:10}

a =

'matlab'        [         20]
    [2x3 double]    [1x10 double]

>> b=[{'matlab'},{20};{ones(2,3)},{1:10}]

b =

'matlab'        [         20]
    [2x3 double]    [1x10 double]

>> c={10}

c =

[10]

>> c(1,2)={2}

c =

[10]    [2]

>> c(2,2)={5}

c =

[10]    [2]
      []    [5]

>> isequal(a,b)

ans =

1

>> whos
Name      Size            Bytes Class      Attributes

a         2x2               388 cell                 
ans       1x1                 1 logical              
b         2x2               388 cell                 
c         2x2               208 cell

用cell函数创建元胞数组,创建的数组为空元胞。cell函数创建空元胞数组的主要目的是为数组预先分配连续的存储空间,节约内存占用,提高执行效率。

>> a=cell(1)

a =

{[]}

>> b=cell(1,2)

b =

[]     []

>> c=cell(3,3)

c =

[]     []     []
     []     []     []
     []     []     []

>> d=cell(2,2,2)

d(:,:,1) =

[]     []
     []     []

d(:,:,2) =

[]     []
     []     []

>> whos
Name      Size             Bytes Class      Attributes

a         1x1                  4 cell                 
ans       1x1                  1 logical              
b         1x2                  8 cell                 
c         3x3                 36 cell                 
d         2x2x2               32 cell

(2)元胞数组的数据获得

从元胞数组中读取数据,可保存为一个标准的数组或一个新的单元数组,或取出数组进行计算。元胞数组中数据的访问,可通过元胞内容的下标进行,用元胞数组名加大括号{}。大括号中数值表示元胞的下标。如a{1,2}表示元胞数组中第一行第二列的元胞。

>> a={20,'matlab';ones(2,3),1:3}

a =

[        20]    'matlab'    
    [2x3 double]    [1x3 double]

>> str=a(1,2)

str =

'matlab'

>> class(str)

ans =

cell

>> str=a{1,2}

str =

matlab

>> class(str)

ans =

char

()和{}有着本质的区别,大括号用于表示元胞的内容,小括号表示指定的元胞。

a =

[        20]    'matlab'    
    [2x3 double]    [1x3 double]

>> a{2,1}(2,2)

ans =

0.9134

>> a{2,1}(2,3)

ans =

0.0975

>> a{1,2}(2)

ans =

a

使用元胞的下标,可将一个元胞数组的子集赋值给另一个变量,创建新的元胞数组。

>> a=[{1},{2},{3};{4},{5},{6};{7},{8},{9}]

a =

[1]    [2]    [3]
    [4]    [5]    [6]
    [7]    [8]    [9]

>> b=a(2:3,2:3)

b =

[5]    [6]
    [8]    [9]

>> c=a(1:3,2:3)

c =

[2]    [3]
    [5]    [6]
    [8]    [9]

本例使用元胞下标的方式创建了新的元胞数组b和c,通过结果看出b和c就是元胞数组a的一部分。

(3)元胞数组的删除和重塑

要删除单元数组中的行或列,可以用冒号表示单元数组中的行或列,然后对其赋一个空矩阵即可。

a={20,'matlab';ones(2,3),1:3}

a =

[        20]    'matlab'    
    [2x3 double]    [1x3 double]

>> a(1,:)=[]

a =

[2x3 double]    [1x3 double]

>> a={20,'matlab';ones(2,3),1:3};
>> a{1}=[]

a =

[]    'matlab'    
    [2x3 double]    [1x3 double]

>> a(1)=[]

a =

[2x3 double]    'matlab'    [1x3 double]

>> a(2)=[]

a =

[2x3 double]    [1x3 double]

>> a(1,2)=[]
??? A null assignment can have only one non-colon index.

>> a(1)=[]

a =

[1x3 double]

元宝数组和其他数组一样,也可以通过reshape函数改变形状,改变后的元胞数组与原元胞数组的元素个数相同,不能通过改变形状来添加或删除元胞数组中的元素。

>> a=cell(4,4)

a =

[]     []     []     []
     []     []     []     []
     []     []     []     []
     []     []     []     []

>> size(a)

ans =

4     4

>> b=reshape(a,2,8)

b =

[]     []     []     []     []     []     []     []
     []     []     []     []     []     []     []     []

>> size(b)

ans =

2     8

(5)元胞数组中的操作函数

cell:创建空的元胞数组

cellfun:为元胞数组的每个元胞执行指定的函数

celldisp:显示所有元胞的内容

cellplot:利用图形方式显示元胞数组

cell2mat:将元胞数组转变成为普通的矩阵

mat2cell:将数值矩阵转变成为元胞数组

num2cell:将数值数组转变成为元胞数组

deal:将输入参数赋值给输出

cell2struct:将元胞数组转变成为结构

struct2cell:将结构转变为元胞数组

iscell:判断输入是否为元胞数组

>> a={20,'matlab',3-7i;ones(2,3),1:3,0}

a =

[        20]    'matlab'        [3.0000 - 7.0000i]
    [2x3 double]    [1x3 double]    [               0]

>> b=cellfun('isreal',a)

b =

1     1     0
     1     1     1

>> c=cellfun('length',a)

c =

1     6     1
     3     3     1

>> d=cellfun('isclass',a,'double')

d =

1     0     1
     1     1     1

(函数的应用)

cellfun函数的主要功能是对元胞数组的元素(元胞)分别指定不同的函数,不过,能够在cellfun函数中使用的函数ushuliang是有限的。

能在cellfun中使用的函数:

isempty:若元胞元素为空,则返回逻辑真

islogical:若元胞元素为逻辑类型,则返回逻辑真

isreal:若元胞元素为实数,则返回逻辑真

length:元胞元素的长度

ndims:元胞元素的维数

prodofsize:元胞元素包含的元素个数

(7)元胞数组的嵌套

元胞数组的元胞中包含其他的元胞数,称为嵌套元胞数组,没有嵌套结构的元胞则称为页元胞。使用嵌套的大括号或cell函数,或直接用赋值表达式,都可以创建嵌套单元数组,另外还可以访问嵌套元胞数组的子数组、元胞或元胞的元素。

>> a=cell(1,2)

a =

[]     []

>> a(1,2)={cell(2,2)}

a =

[]    {2x2 cell}

>> a(1,1)={magic(3)};
a{1,2}(1,1)={[1 2 3;4 5 6;7 8 9]};
a{1,2}(2,1)={[2-i;4+7i]};
a{1,2}(2,2)={cell(1,2)};
a{1,2}{2,2}(2)={5};
>> cellplot(a)

(8)元胞数组与数值数组间的转化

应用循环,可以将元胞数组转化为数值数组。

matlab cell 函数用法相关推荐

  1. MATLAB中fix啥意思,matlab fix函数用法_常见问题解析,matlab

    matlab syms什么意思_常见问题解析 matlab中syms的意思是定义多个变量,可以用来创建符号变量x和y,语法是"syms x y":也可以创建一些符号变量.函数和数组 ...

  2. matlab中的fix,matlab fix函数用法_常见问题解析

    matlab syms什么意思_常见问题解析 matlab中syms的意思是定义多个变量,可以用来创建符号变量x和y,语法是"syms x y":也可以创建一些符号变量.函数和数组 ...

  3. [转载]Matlab fmincon函数用法

    原文地址:Matlab fmincon函数用法作者:长笛人倚楼Gloria 这个函数在之前优化工具箱一文中已经介绍过,由于其应用广泛,所以这里通过实例单独整理一下其用法. 一.基本介绍 求解问题的标准 ...

  4. matlab中的fix,matlab fix函数用法

    matlab fix(x)和floor(x)的区别? 1)fix(n)的意义是取小于n的整数(是向零点舍入的意思是往零的方向上靠),这是一类应用在整数取值上的函数,就如同以前我们所研究的CSS布局HT ...

  5. matlab cell数据用法

    细胞型(有的书上称单元)数据是matlab的一种特殊数据类型,它比较灵活,可以存储不同的数据类型(字符.数值)和不同维数的数组. 有两种方法创建: 1.赋值语句:把数值直接赋值给单元,如: 内容索引  ...

  6. matlab曲线拟合 函数 用法以及例子

    在运行MATLAB编程进行数据的处理过程当中,我们常常用到matlab曲线拟合,但是工具箱由于需要人工交互,得到的拟合结果,需要人工的去提取,再输入,所以,工具箱拟合结果十分不适合调用,以及继续下面的 ...

  7. matlab拟合曲线poly交点,matlab曲线拟合 函数 用法以及例子,看完你就知道了

    在运行MATLAB编程进行数据的处理过程当中,我们常常用到matlab曲线拟合,但是工具箱由于需要人工交互,得到的拟合结果,需要人工的去提取,再输入,所以, 工具箱拟合结果 十分不适合调用,以及继续下 ...

  8. matlab randperm()函数用法

    randperm()函数用法 随机函数 语法: p = randperm(n) p = randperm(n,k) 语法描述: p = randperm(n)   返回一行包含从1到n的整数. < ...

  9. [Matlab] subplot函数用法

    subplot函数用法 subplot(a,b,c)顾名思义,sub的意思就是在一张图上画出子图出来 参数 a 表示子图有几行 参数 b 表示子图有几列 参数 c 表示当前子图的序号,也就是第几个图, ...

最新文章

  1. NSAttributedString 详解
  2. 如何彻底解决安装Windows漏洞补丁出现蓝屏或无法启动问题?
  3. 使用.NET Core快速开发一个较正规的命令行应用程序
  4. window系统无限试用 JAVA IDEA不限版本
  5. Exchange 2013 OWA重定向
  6. wordpress footer置底
  7. 这周的工作任务,编写sql存储过程
  8. layui表头样式_Layui表格好看样式
  9. MATLAB简介与矩阵定义
  10. Vue - Todos 案例
  11. 【obs】27:deps 构建说明及studio的vs2019构建及裁剪
  12. android p 小米6,小米6 想升级 Android P,系统软件工程师发话:可适配
  13. 《高效阅读——20分钟读懂一本书》读书总结
  14. FlashFXP 连接成功无法显示目录
  15. mysql 语句 面试题
  16. 【题解】10-19秀秀的森林(forest)
  17. UE4 3ds Max 模型多维子材质
  18. 七个不可思议事件谜题
  19. 我们一起学一学渗透测试——黑客应该掌握的Windows基础
  20. UE4 AndroidSDK配置

热门文章

  1. 深度学习工程应用快速入门
  2. 《松鼠》电化教学教案
  3. 【Python黑帽子】——简易的ZIP文件密码破解器
  4. 通俗理解DDPM:生成扩散模型
  5. 付源泉老师 企业人才管理专家
  6. 计算贝努利(bernoulli)概型的MATLAB函数
  7. AcWing第五场周赛
  8. 面试问题准备-数据仓库建模篇
  9. 有哪些电脑软件堪称神器
  10. python 正则表达式 re 爬取网页及分析总结