Matlab自学笔记二十九:元胞数组的创建、索引和转换方法

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;

程序示例:

a={}

iscell(a) %判断元胞数组

4. 索引方法

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

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

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

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

程序示例如下:

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. 元胞数组数据连接

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

b={1,2,magic(3)

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

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

b{1,1:2} %2个索引到的元素,连接为1*2矩阵

6. 元胞数组的转换

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

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错误,因此,必要时,元胞数组需要初始化和预分配内存,编程示例如下:

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

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

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

视频推荐

Matlab/1.34/元胞数组/夜发清溪向三峡 思君不见下渝州

Matlab/1.3/调用函数/何须浅碧深红色,自是花中第一流

14.1 Matlab解微分方程

45.1 一个实例入门Matlab深度学习|卷积神经网络

31.6 Matlab绘制条形图柱状图,改变单个柱的颜色,堆叠显示,改变线型线宽

31.17 干货汇总Matlab绘图/三维线图/三维柱状图/三维饼图/函数三维图

43.4 Matlab BP(反向传播)神经网络/看完这个可以放弃B站了

66.15/Matlab有点飘:未定义函数或变量/函数或变量无法识别

36.4 GUI列表框弹出菜单实例:信息注册系统

End

相关推荐
闻缺陷则喜何志丹7 小时前
【C++特性】四种类型转
c++·算法·类型转换
缘来是你远去是我7 小时前
本地个人笔记exe
笔记
喵本喵叁肆7 小时前
用 Boosting 把弱隐私算法炼成强隐私算法(英文原题:Boosting and Differential Privacy (FOCS 2010))
算法·集成学习·boosting
青梅味猪大肠8 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
FakeOccupational8 小时前
【电路笔记 STM32】RTC配置:晶振选择+闹钟Configuration+中断设置
笔记·stm32·实时音视频
迪康coolmu8 小时前
企业U盘管控落地实战:基于迪康端点安全一体化管理系统的移动存储安全实践
运维·人工智能·经验分享·笔记·安全·电脑
Z21-X10 小时前
云原生运维学习笔记:容器技术的演进、底层原理与 Docker 全生命周期管理
运维·笔记·学习·云原生
Rabitebla18 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
小lu飞20 小时前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程