Matlab中的元胞数组(cell)

本文详细介绍了MATLAB中元胞数组的创建、访问、删除方法及其相关函数。元胞数组能存储不同类型的数据,适用于复杂数据结构的处理。文章解释了直接赋值法、使用cell函数和{}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

元胞数组(Cell Array)将类型不同的相关数据集成到一个单一的变量中,使得大量相关数据的引用和处理变得简单方便。cell元胞数组,存储不同类型的数据。
A cell array is a collection of containers called cells in which you can store different types of data.

1、元胞数组的创建

创建方法有3种:直接赋值法、利用函数cell()、利用{ }直接创建元胞数组的所有单元。

1.1 直接赋值法

通过赋值语句把值赋到元胞数组的一个单元中,但每一次赋值只能创建一个单元内容。
两种赋值方法:内容索引法(content indexing)和单元索引法(cell indexing)。
(1)内容索引法
赋值语句的左边用大括号{ }将标识单元的下标括起来,右边为单元的内容。
在这里插入图片描述
(2)单元索引法
赋值语句的左边用小括号()将标识单元的下标括起来,右边用大括号将存储于单元中的数据括起来。
在这里插入图片描述

1.2 利用函数cell()

利用函数cell() 可以创建一个元胞数组,还可以规定其大小。
在这里插入图片描述

1.3 利用{ }直接创建元胞数组(的所有单元)

这是一种快捷的元胞数组创建方法,利用{ }可以直接快速地创建所需元胞数组。在大括号中一次列出所需创建元胞数组的内容,它们之间用逗号(,)隔开,行与行之间用分号(;)隔开,这样就可以创建一个已经初始化好的元胞数组。
在这里插入图片描述

2、元胞数组的寻访

在编程时,一个元胞数组的每一个单元都是一个指针,指向其他的数据结构,而这些数据结构可以是不同的数据类型。在MATLAB中,元胞数组创建时,没有显示内容单元的内容,显示的只是它相应的数据类型。而MATLAB可以通过单元的名称来寻访其单元包含的内容。
通过()访问cell数组时访问到的是cell单元,通过{}访问cell数组时访问到的是cell单元储存的内容。
在MATLAB中,元胞数组的寻访有以下三种形式。
(1)用( )将下标括起来寻访其单元的结构类型。
(2)用{ }将下标括起来寻访其单元的内容。
(3)用celldisp( )函数对元胞数组的所有内容进行寻访。

例子
可以直接通过{}类似于矩阵的直接赋值:a={‘winter’,123,‘coming’,‘哈哈’};
也可以通过cell函数预分配内存,再赋值:a=cell(1,4);a={‘winter’,123,‘coming’,‘哈哈’};
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、cell单元的删除

矩阵及矩阵的删除可以通过[]实现
在这里插入图片描述
元胞数组删除操作区别就在于{}和()
a={1,2,3};
a{1}=[]; %并不能删除第一个cell单元,只是变成空值
a(1)=[]; %删除第一个单元
a(:)=[]; %一次性删除所有cell单元

在这里插入图片描述

4、相关函数

· celldisp:显示元胞数组中所有的内容
· cell:创建空的元胞数组
· cellplot:利用图形方式显示内容
· cell2mat:将数组转变成为普通的矩阵
· mat2cell:将数值矩阵转变成为cell数组
· num2cell:将数值数组转变成为cell数组
· cell2struct:将数组转变成为结构
· struct2cell:将结构转变为cell数组
· iscell:判断输入是否为cell数组

链接:
https://www.cnblogs.com/shenxiaolin/p/9281637.html
http://blog.sina.com.cn/s/blog_8259d70901017wit.html
https://blog.youkuaiyun.com/qq_38412868/article/details/79303083
https://jingyan.baidu.com/article/c910274ba8bcadcd361d2da7.html

### MATLAB数组的使用方法 #### 数组简介 数组Cell Array)是 MATLAB 提供的一种数据结构,能够存储不同类型的素,例如数值、字符串、结构体甚至其他数组。这种灵活性使得数组成为处理复杂数据的理想工具。 #### 创建数组 可以通过 `{}` 运算符或者 `cell` 函数来创建数组。以下是两种常见的创建方式: 1. **使用大括号 `{}`** ```matlab C = {'string', 123, [1, 2; 3, 4], magic(3)}; ``` 上述代码定义了一个包含字符串、标量、二维数组以及魔方矩阵的数组[^1]。 2. **使用 `cell` 函数** 如果需要预先分配一个空的数组,则可以使用 `cell` 函数: ```matlab D = cell(2, 3); % 创建一个 2×3 的空数组 ``` #### 访问数组中的素 访问数组的内容有两种主要的方式:圆括号 `()` 和大括号 `{}`。 - 圆括号 `()` 返回的是另一个数组,表示对原数组的一个子集的选择。 - 大括号 `{}` 则返回实际存储在该位置的具体内容。 示例: ```matlab C = {'string', 123, [1, 2; 3, 4], magic(3)}; % 定义数组 sub_cell_array = C(1:2); % 获取前两个组成的新数组 content_of_first_element = C{1}; % 获取第一个的实际内容 (即 'string') ``` #### 修改数组中的素 修改数组中的某个特定素可以直接赋值给其对应的大括号索引位置: ```matlab C{1} = 'new string'; % 将第一个替换为新的字符串 C{2} = pi; % 将第二个替换为 π 值 ``` #### 删除数组中的素 删除数组中的某项可通过将其设置为空实现: ```matlab C{3} = []; % 清除第三个的内容 D(:, 2) = []; % 移除第二列的所有 ``` #### 示例程序分析 下面是一个综合性的例子展示如何操作数组: ```matlab clear; clc; % 初始化变量 y.a = 1; y.b = [1:3, 4:6]; % 构建数组 B B{1,1} = 1; % 数字 B{1,2} = 'Brenden'; % 字符串 B{2,1} = y; % 结构体 B{2,2} = {12,34,2; 54,21,3; 4,23,67}; % 另一嵌套数组 % 显示大小和维度信息 disp(['Size of B is ', num2str(size(B))]); % 输出尺寸 disp(['Number of dimensions in B is ', num2str(ndims(B))] ); % 维度数 % 打印某些具体单格的信息 disp('Content at position (2):'); disp(B(2)); disp('Content at position (3):'); disp(B(3)); disp('Content at position (4):'); disp(B(4)); % 用户交互逻辑判断清除方式 i = input('i=? '); if i == 0 B(3) = []; else B{3} = []; end disp('After modification:'); disp(B); ``` 上述脚本展示了多种数组的操作技巧,包括初始化、查询属性、打印指定区域以及条件下的清理动作[^2]。 #### 总结 MATLAB数组提供了一种强大的机制用于管理异质数据集合。无论是简单的标量还是复杂的多维对象都可以被统一存放在同一个容器里加以管理和运算。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值