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

本文主要是介绍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

这篇关于Matlab自学笔记二十九:元胞数组的创建、索引和转换方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904777

相关文章

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

一文详解MySQL索引(六张图彻底搞懂)

《一文详解MySQL索引(六张图彻底搞懂)》MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度,:本文主要介绍MySQL索引的相关资料,文中通过代码介绍的... 目录一、什么是索引?为什么需要索引?二、索引该用哪种数据结构?1. 哈希表2. 跳表3. 二叉排序树4.

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据