matlab的cell数组

Matlab如何判断数组中是否为空数组Matlab如何判断两个数组内容是否相等、Matlab如何检测数组中的素是否为NaN(空值)、统计数组中不为NaN的素的个数 阅读详情
matlab的cell数组 (2010-04-06 15:19:42)转载▼ 标签: cell 元胞数组 教育 分类: matlab及perl学习 


元胞数组:


     元胞数组是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)元胞数组与数值数组间的转化


       应用循环,可以将元胞数组转化为数值数组。
 引自:http://hi.baidu.com/hbwc/blog/item/a89ec511ab669a1bb8127b5c.html
matlabcell合并/拼接 数组/array/matrix 去重 【代码】matlabcell合并/拼接 数组/array/matrix 去重。 阅读详情

相关推荐

MATLAB中的三维数组

这些工具箱提供了许多专用函数,用于处理三维数据,例如计算三维数据的梯度、三维图像分割、三维数据的FFT等。数值模拟:三维数组用于存储和分析数值模拟数据,例如计算流体力学中的三维流场模拟和材料科学中的三维有限分析。科学研究:三维数组用于存储和分析科学数据,例如地震学中的三维地震数据分析和生物医学研究中的三维结构分析。在MATLAB中,可以将三维数组转换为更高维度的数组,或者将其重新整形为更低维度的数组三维建模:三维数组用于建立三维模型,例如机械工程中的三维建模和CAD设计中的三维设计。

dm1901的博客 6635

Matlab判断数组是否为空值的办法

我最近做数据处理遇到了问题,就是数组有很多种类型的数据,某一列需要处理的,有很多分类,其中包括空值,比如{A,B,C,“”},其中A,B是我已知的,需要的数据,C未知,最后那个是空值,如果我要判断某素为A,B或者空值时,就处理表达式,如果是未知C,就返回警告。二、先给要判断的素末尾添加一个字符B=[cell2mat(A(1,2)),“1“],然后用这个值和所添加的字符相比较,B==“1“?如果是空值就相等,返回1,如果不是空值就不相等,返回0,这个可以通过或运算区别已知,未知和空值。

qq_43482662的博客 3462

详细介绍matlab中的cell数组

matlab中的cell数组应用非常广泛,同时也证明其功能的优越性。当需要在MATLAB中存储不同类型的数据或不同大小的数组时,cell 数组是一个非常有用的数据结构,本人在初学时看见cell数组的应用就想退而远之,因此希望通过本篇文章把cell数组的理解、定义、存储及使用详细的理解一遍,希望对其他初学者有所帮助,欢迎交流与讨论。

2301_81723939的博客 2万+

MATLAB 笔记

加载文件夹 D = dir('directory_name') dir 返回一个结构数组,包含了文件夹 directory_name 下的子文件夹和子文件的一些信息,第 1 个成员 name 是文件名,第 4 个成员 isdir 表示是否为文件夹。 注意:结构体的是第 1 个数组素和第 2 个数组素分别是 ‘.’ 和 ‘…’,表示当前目录和上层目录。所以如果需要求文件夹中子文件的个数,需要给...

学习 & 分享 ~ 4194

matlab cell数组

cell使用说起 在读取文件的时候,cell数组(各种翻译都有,数组,单数组...直接无视)是Matlab的宠儿,基本都会出现,长期使用发现频率比struct高了不少~无论是Import Data还是使用textscan之类来获取数据.从长期使用高级语言的角度来说,特别是习惯了面向对象之后i,更习惯使用struct数组,概念也很相似,奈何现实是...我们先看一下Matlab在help给

脚踏实地 6662

matlabcell数组用法

第一次接触cell数据是因为做一个数据处理时由于数据量太大excel的vlookup奔溃而数据库不熟练只能硬着头皮强行导入matlab匹配,其中有一列数据为年月日时分秒,还好matlabcell数组,中间使用也遇到一些问题,现在总结一下用法方便以后复习和可能会用到的朋友。 cell数组一般被叫做数组,它的每个单可以储存不同的数据类型,可以是数值,字符或矩阵或数组等,类似于学过的c语言...

fff2zrx的博客 25万+

matlab 判断cell相同,matlabcell数组用法

第一次接触cell数据是因为做一个数据处理时由于数据量太大excel的vlookup奔溃而数据库不熟练只能硬着头皮强行导入matlab匹配,其中有一列数据为年月日时分秒,还好matlabcell数组,中间使用也遇到一些问题,现在总结一下用法方便以后复习和可能会用到的朋友。cell数组一般被叫做数组,它的每个单可以储存不同的数据类型,可以是数值,字符或矩阵或数组等,类似于学过的c语言里的...

weixin_42651887的博客 8114

MATLAB Cell数组

matlab cell数组        cell数组MATLAB的一种特殊矩阵,或者叫做广义矩阵。矩阵的每个素可以是任何一种数据类型的常数、常量或者矩阵,所以矩阵的每个的素叫做cell。和一般的数值矩阵一样,数组的内存空间也是动态分配的。       在做图像处理的时候需要用到一维数组数组素为一个3×3的像素矩阵。而矩阵式不能作为一般数值数组素的。这样就必须用到cell

yam_killer的专栏 4万+

matlab字符串、向量、矩阵、cell数组拼接

一、字符串拼接 str1 = 'Hello'; str2 = 'World'; str3 = [str1 str2] len_str3 = length(str3) 二、向量拼接 vec1 = [1 2 3]; vec2 = [4 5 6]; 1、直接(尾部)拼接 vec3 = [vec1 vec2] 2、行拼接(“;”) vec4 = [vec1;ve...

wk的博客 3万+

matlabcell数组的全面介绍

本文转载自:http://blog.sina.com.cn/s/blog_8259d70901017wit.html从cell使用说起在读取文件的时候,cell数组(各种翻译都有,数组,单数组...直接无视)是Matlab的宠儿,基本都会出现,长期使用发现频率比struct高了不少~无论是Import Data还是使用textscan之类来获取数据.从长期使用高级语言的角度来说,特别是习惯了...

叶云夕的博客 5万+

matlabcell数组写入txt

在这个例子中,在将cell数组转换为矩阵后,我们就可以使用MATLAB内置的dlmwrite函数直接写入矩阵,而无需遍历单格。第二种方法是使用MATLAB自带的dlmwrite函数,此函数用于将数组写入文件中。但它本身不能将cell数组写入文本文件中,因此需要先将cell数组转换为矩阵,再调用dlmwrite函数进行写入。表格创建成功之后,即可将cell数组中的数据写入到文件中。3.写入数据到txt文件中。将cell数组中的数据逐行写入到txt文件中。函数将cell数组中的每个素写入txt文件中。

brickhum0的博客 4813

matlabcell数组的详细用法

可以发现读取出来的素,还是cell类型。

珞瑜的博客 4198

matlab 排序 cell,MATLAB中对cell数组排序

近期在干啥差不多有24天没写推送了。。。。一直干活,期间好几晚都没回宿舍,太惨了,净在干些没啥用的事情。 虽然不想干,但确实学到了一些东西(大半个月没找工作了,更想找工作来着)。 MATLAB中,如何对cell数组排序?问题背景如下图所示,我有一个 1 *n 的cell数组,这个cell的每一个素是一个 1 *2 的向量,表示一个坐标点(x, y): 现在要根据坐标的 x 值对这个 cell 数...

weixin_39953244的博客 1199

Matlab的结构体、矩阵、cell数组

目录 Matlab的变量类型 结构体 cell数组数组) 矩阵 总结 { } [ ] ( ) Matlab的变量类型 要将自己算法的跟踪结果的txt中数据写成mat格式放入OTB工具进行评测,但并不是单纯地将txt转成mat,而是其下字段为res的值,依次点击显示变量是如下这样,还是深入研究一下数据格式和类型吧,然后txt转mat还是再另开篇博吧。 结构...

qq_33970986的博客 1万+

Matlabcell数组的使用

cell数组又叫数组,它的作用类似于其他编程语言中的结构体,可以存储多种类型的数据,使用大括号{ } 创建cell数组 创建空cell数组C = {} 从数据中创建cell数组 例如: C = {1,2,3;'text',rand(5,10,2),{11; 22; 33}} 输出: 创建指定大小的cell数组 可以使用 cell 预分配一个数组,稍后再为其分配数据。 C = c...

qq_38169383的博客 1408

(转)matlabcell数组用法

原创 matlabcell数组用法 ...

qq_41978139的博客 4967

matlabcell数组的介绍及操作(包含完整代码案例演示)

MATLAB中,Cell数组可以用花括号“{}”表示,也可以用函数“cell”创建。例如:% 用花括号定义一个空的Cell数组% 用函数cell创建一个包含3个素的Cell数组在这个例子中,我用了函数“cell”,并指定了其输入参数为“1”和“3”,即创建了一个包含1行和3列的Cell数组。除了这种方式,还可以将已有的数据转换为Cell数组。例如,将一个数组转换为Cell数组的代码如下:% 将一个数组转换为Cell数组

baidu_38876334的博客 6943
上一篇: 解决“libsvm classes not in CLASSPATH”问题
下一篇: matlab 删除字符串开头和结尾的空白
gotomic
博客等级 码龄19年 54粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值