Day16_0.1基础学习MATLAB学习小技巧总结(16)——元胞数组

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。

素材来源“数学建模清风”

特此说明:本博客的内容只在于总结在使用matlab中的一些小技巧,并非教程,若想系统的学习MATLAB,也可以移步去链接中的视频,观看学习。也欢迎各位在留言区补充,纠错,讨论。

原素材和学习视频地址:MATLAB教程新手入门篇(上部分)(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili​编辑https://www.bilibili.com/video/BV1dN4y1Q7Kt/?spm_id_from=333.337.search-card.all.click&vd_source=c06380c48bd362b3f90af762beebf543

元胞数组

1 概念

元胞数组(cell)作为一个独立的存储单元,可以将不同数据类型的数据存储在同一个矩阵中。它是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。

2 数据类型

下面介绍的元胞数组涉及到许多不同的数据类型,所以在这里先简单的介绍以下各种数学类型。

数值类型(double):用来保存数值数据,包括整型和浮点型,其中整型和浮点型还可以进步细分。我们创建的数值矩阵都是默认的双精度浮点型。

文本类型:用来保存文本数据,可细分为字符类型(char)和字符串类型(string)。

逻辑类型(logical):包含布尔型变量true和false,分别表示逻辑值1和逻辑值0。

元胞数组类型(cell):包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。。

结构体数组类型(struct):带有可以包含各种类型和大小的数据的命名字段的数组.

分类数组类型(categorical):用于保存分类型变量的数据,例如性别、等级等.

日期时间类型(datetime):用于保存日期、时间的数据.

表格类型(table):保存表格形式的数据.

函数句柄(function handle):可用于引用和间接调用函数.

3 创建元胞数组

创建元胞数组需要在英文模式下使用大括号 {} 。在元胞数组中,同行元素之间可以用逗号或者空格分隔,而行与行之间则通过分号或者回车键分隔。

A = {1:3, 'afabvab';
    char('afg','bva','adf') 0989;
    [12 34 32;2 2 43] [2;4]}

从上面可以看出元胞数组中保存的数据非常灵活,数据大小和数据类型都没有限制。

并且在新版本的MATLAB中,会将元胞数组的保存在一个表格中,且每一个元素的类型都是灵活和,可以为任意数值类型。

既然有如此多的数据类型,为什么MATLAB还要采用元胞数组的类型去表达这些数值呢?

这种设计基于元胞数组的特性,允许在同一数组中存储不同类型和大小的数据。例如,初始的元胞可能包含一个数值向量[123],后续可以轻松更换为其他向量、矩阵或不同类型的数据。

MATLAB中的元胞数组将每个元素视为独立的元胞,使得修改时不会影响整体结构。这种设计显著增强了元胞数组的灵活性,成为处理不规则数据的理想选择。

4 引用元胞数组

引用元胞数组有两种方式:使用小括号()和使用大括号{}。这两种引用方式有着不同的用途和效果。

下面用一个4x2的元胞数组来作为例子举例:
 

A = {1:3, 'afabvab';
    true,7898;
    [12 34 32;2 2 43],[2;4];
    char('ad','vbh','bj'),5+8i}

(1)当使用小括号()引用时

 当使用小括号()来引用元胞数组时,我们实际上是在引用元胞数组中的元胞,因此小括号引用时返回的是一个元胞数组,而不是元胞中存储的数据。

A = {1:3, 'afabvab';
    true,7898;
    [12 34 32;2 2 43],[2;4];
    char('ad','vbh','bj'),5+8i}
%第一行第二列位置的元素
A1 = A(1,2)
%第四行第一列位置的元素
A2 = A(4,1)
%使用class查看A1的数据类型
class(A1)
%查看A1的大小
size(A1)
%奇数行元素
A(1:2:end)
%线性索引为5的元素
A(5)
%按照线性索引的顺序重新排列元胞数组
A(:)

(1)当使用大括号 { } 引用时 

使用大括号{}引用元胞数组时,我们可以直接得到对应位置的元胞数组中的数据。

A = {1:3, 'afabvab';
    true,7898;
    [12 34 32;2 2 43],[2;4];
    char('ad','vbh','bj'),5+8i}
%第一行第二列位置的元素
A1 = A{1,2}
%第四行第一列位置的元素
A2 = A{4,1}
%使用class查看A1的数据类型
class(A1)
%查看A1的大小
size(A1)
%第一行元胞中的数据
A{1,:}
% 使用两个变量保存第一行元胞中的数据
[B,C] = A{1,:}
%返回变量数量小于引用的元胞数量
[x, y] = A{1:2,:}

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值