许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  元胞数组创建索引转换方法Matlab入门扫盲29

元胞数组创建索引转换方法Matlab入门扫盲29

阅读数 7
点赞 0
article_banner


1.概念

元胞数组(cell array)是一种具有容器特性的数据类型,每个元素可以包含任何类型的数据;

2.创建方法

(1)方法一:使用大括号{};

(2)方法二:使用函数cell;

(3)元胞数组创建和扩展时默认填充元素是空矩阵[]

程序示例:

代码块


a={}
b={1,2,magic(3)
    'a',["a","b"],[]}  %分别双精度标量、3阶魔方矩阵、字符、字符串数组、空矩阵。2行用回车分割,或用分号分割
cell(2,3)  %创建2行3列元胞数组

      复制成功
     
     
     
     

3.如何判断元胞数组类型

判断是否为元胞数组使用函数iscell;

程序示例:

代码块

JavaScript


a={}
iscell(a)  %判断元胞数组

      复制成功
     
     
     
     

4.索引方法

元胞数组的索引分为两种方式:

(1)小括号()表示查找数组中的某一元素;

(2)大括号{}表示查找数组中某一元素的值;

举例说明,元胞数组c={1,’abc’},这是1*2的元胞数组,包含2个元素,查找第二个元素使用索引c(2),返回{‘ab’},它是一个1*1的元胞数组,如果使用大括号索引c{2},返回’ab’,它是一个1*2的字符向量;

程序示例如下:

代码块

JavaScript


b={1,2,magic(3)

    'a',["a","b"],[]}

b(1,3)  %索引元胞数组的元素

b{1,3}  %索引元胞数组的元素的内容

b{1,1:3}  %索引1行1-3列元素,未指定输出变量,默认ans

[v1,v2,v3]=b{1,1:3}  %索引3个元素值,并赋值给3个变量

v=b{1,1:3}  %当仅指定1个输出变量,则只返回第1个值

b{1,3}(1:2)  %二级索引

      复制成功
     
     
     
     

5.元胞数组数据连接

这也是大家经常编程报错的知识点,程序示例如下:

代码块

JavaScript


b={1,2,magic(3)

    'a',["a","b"],[]}

%[b{1,1:3}]  %维度不同无法连接

 [b{1,1:2}]  %2个索引到的元素,连接为1*2矩阵
 
      复制成功
     
     
     
     

6.元胞数组的转换

每个元胞元素类型相同且大小相同才可进行转换,元胞数组与数值型的转换函数包括cell2mat、mat2cell,程序示例如下:

代码块

JavaScript


b={1,2,magic(3)

    'a',["a","b"],[]}

%cell2mat(b)  %b没有明确结果类型因此报错

m=cell2mat({1 2})  %数值型可以转换为矩阵

n=cell2mat({'a','b'})

%cell2mat({"a","b"})  %该转换函数不支持字符串数组

mat2cell(m,1)  %第2个参数1表示1行1列元胞数组,将整个矩阵看做元胞数组元素

mat2cell(m,1,[1 1])  %第3个参数指定了列数为2列,每列个数分别为1

mat2cell(n,1)

mat2cell(n,1,[1 1])

      复制成功
     
     
     
     

7.初始化和预分配内存

元胞数组不需要完全连续的内存,但每个元素需要连续的内存,对大型的元胞数组,增加元素数量可能导致Out of Memory错误,因此,必要时,元胞数组需要初始化和预分配内存,编程示例如下:

代码块

JavaScript


c=cell(100,100)  %对大型元胞数组,预分配内存

d={}  %初始化后(也可不初始化,因Matlab使用变量不需提前声明,因此也可直接赋值)

d{100,100}=[]  %用数组扩展的方式,将第100行第100列元素设置为空,其他未指定元素默认用空矩阵填充,完成预分配内存

      复制成功
     
     
     
     


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空