MATLAB中cell(元胞)数组的基本用法
程序员文章站
2022-03-31 20:46:34
...
说明
元胞数组是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。
创建对象
1、我们可以使用元胞数组构造运算符 {} 创建该数组,例如:
% 使用元胞数组构造运算符{}创建数组
C = {1,2,3;
'text',rand(5,10,2),{11; 22; 33}}
C = 2x3 cell array
{[ 1]} {[ 2]} {[ 3]}
{'text'} {5x10x2 double} {3x1 cell}
2、还可以使用cell 预分配一个元胞数组,稍后再为其分配数据,例如:
% 使用cell函数预分配一个数组
C =cell(3);
C = 3x3 cell array
{0x0 double} {0x0 double} {0x0 double}
{0x0 double} {0x0 double} {0x0 double}
{0x0 double} {0x0 double} {0x0 double}
其中,cell函数不仅可以预分配一个元胞数组,还可以可将 Java 数组、.NET System.String 或 System.Object 数组或者 Python 序列转换为 MATLAB 元胞数组。
元胞数组的访问
我们所创建的元胞数组是一系列元胞数据类型的集合,我们通过将索引括在圆括号 () 中可以引用元胞集,使用花括号 {} 进行索引来访问元胞的内容,例如:
C = {'2017-08-16',[56 67 78]};
C(1,:)
ans = 1x2 cell array
{'2017-08-16'} {1x3 double}
C{1,2}
ans = 1×3
56 67 78
相关函数
cell2mat :将元胞数组转换成普通的数组
cell2table :将元胞数组转换成table类型
cell2struct:将元胞数组转换成结构体数组
cellstr:将元胞数组转换成字符向量
iscell:判断输入是否是元胞数组
更多内容详见:https://www.mathworks.com/help/matlab/cell-arrays.html.
重点函数
用法
cellfun:将函数作用于数组中的每一个元胞
A = cellfun(func,C),将函数func作用到C中的每一个元胞中,
一次作用于一个元胞,相当于A(i) = func(C{i})。
示例
C = {1:10, [2; 4; 6], []};
%计算每个元胞的均值
A = cellfun(@mean,C)
A = 1×3
5.5000 4.0000 NaN
%删除空的元胞数组
A(cellfun(@isempty,A))=[]
A=1×2 cell
{1x10 double} {3x1 double}
更多示例详见:https://www.mathworks.com/help/matlab/ref/cellfun.html.
上一篇: 欧拉计划问题十matlab实现
下一篇: matlab 欧拉计划 35