欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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.

重点函数cellfuncellfun

用法

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