Matlab中cell函数用法

本文详细介绍了MATLAB中元胞数组的创建、语法和使用示例,包括如何创建方形元胞数组、三维元胞数组,以及如何根据现有数组克隆大小。元胞数组是MATLAB中用于存储不同类型数据的容器,可用于组织混合数据类型的结构。示例展示了如何创建和索引元胞数组,以及如何利用`cell`函数预分配和转换不同数据结构。
摘要由CSDN通过智能技术生成

目录

说明

创建对象

语法

说明

示例

创建元胞数组

方形元胞数组

方形元胞数组

三维元胞数组

根据现有数组克隆大小


        cell函数的功能是创建元胞数组

说明

        元胞数组是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。通过将索引括在圆括号 () 中可以引用元胞集。使用花括号 {} 进行索引来访问元胞的内容

创建对象

        当要将数据放入一个元胞数组中时,请使用元胞数组构造运算符{}创建该数组。

C = {1,2,3;
     'text',rand(5,10,2),{11; 22; 33}}

C=2×3 cell
    {[   1]}    {[          2]}    {[     3]}
    {'text'}    {5x10x2 double}    {3x1 cell}

        也可以使用{}创建一个空的0×0元胞数组。

C = {}

C =

  0x0 empty cell array

        要创建具有指定大小的元胞数组,请使用下面介绍的cell函数。可以使用cell预分配一个元胞数组,稍后再为其分配数据。cell还可以将某些类型的 Java®、.NET 和 Python® 数据结构体转换为由等效的 MATLAB® 对象组成的元胞数组。

语法

C = cell(n)

C = cell(sz1,...,szN)

C = cell(sz)

D = cell(obj)

说明

  • C = cell(n) 返回由空矩阵构成的 n×n 元胞数组。
  • C = cell(sz1,...szN) 返回由空矩阵构成的 sz1×...×szN 元胞数组,其中,sz1,...,szN 表示每个维度的大小。例如,cell(2,3) 返回一个 2×3 元胞数组。
  • C = cell(sz) 返回由空矩阵构成的元胞数组,并由大小向量 sz 来定义数组大小size(C)。例如,cell([2 3]) 会返回一个 2×3 元胞数组。
  • D = cell(obj) 可将 Java 数组、.NET System.String 或 System.Object 数组或者 Python 序列转换为 MATLAB 元胞数组。

方形元胞数组的大小,指定为整数值

  • 如果n为 0,则 C 为一个空的元胞数组。

  • 如果n为负数,则将其视为0。

元胞数组的维度大小,指定为整数值

  • 如果任何维度的大小为0,则C为空的元胞数组。

  • 如果任何维度的大小为负值,则其将被视为0。

  • 对于第二个维度以上的维度,cell忽略大小为1的尾部维度。例如,cell(3,1,1,1) 生成由空矩阵组成的3×1元胞数组。

大小,指定为由整数组成的行向量。sz 的每个元素指示对应维度的大小

  • 如果任何维度的大小为 0,则 C 为空的元胞数组。

  • 如果任何维度的大小为负值,则其将被视为 0。

  • 对于第二个维度以上的维度,cell 忽略大小为 1 的尾部维度。例如,cell([3 1 1 1]) 生成由空矩阵组成的 3×1 元胞数组。

示例

创建元胞数组

        当相关的数据段具有不同的数据类型时,可将它们放在一个元胞数组中。每个元胞包含一段数据。要引用元胞数组的元素,请使用数组索引。可以使用圆括号()对元胞数组进行索引,使用花括号{}对元胞的内容进行索引

        创建一个元胞数组,其中包含在给定日期测得的几个温度读数。将日期指定为字符向量,将温度指定为双精度数组。要将这些数据段存储在元胞数组中,请将它们放在花括号中。

C = {'2017-08-16',[56 67 78]}

C=1×2 cell
    {'2017-08-16'}    {1x3 double}

        将不同日期的读数添加到元胞数组中。要添加更多元胞,可以通过赋值来扩展元胞数组,就像扩展普通数组一样。

C(2,:) = {'2017-08-17',[58 69 79]};
C(3,:) = {'2017-08-18',[60 68 81]}
C=3×2 cell
    {'2017-08-16'}    {1x3 double}
    {'2017-08-17'}    {1x3 double}
    {'2017-08-18'}    {1x3 double}

        对C的第一行进行索引。当使用圆括号 () 进行索引时,将得到一个作为该元胞数组子集的元胞数组。

C(1,:)

ans=1×2 cell
    {'2017-08-16'}    {1x3 double}

        对元胞的内容进行索引。当使用花括号{}进行索引时,将得到指定元胞中包含的数据段。

C{1,2}

ans = 1×3

    56    67    78

方形元胞数组

        创建一个由空矩阵构成的 3×3 元胞数组。

C = cell(3)

C=3×3 cell
    {0x0 double}    {0x0 double}    {0x0 double}
    {0x0 double}    {0x0 double}    {0x0 double}
    {0x0 double}    {0x0 double}    {0x0 double}

方形元胞数组

        创建一个由空矩阵构成的 3×3 元胞数组。

C = cell(3)

C=3×3 cell
    {0x0 double}    {0x0 double}    {0x0 double}
    {0x0 double}    {0x0 double}    {0x0 double}
    {0x0 double}    {0x0 double}    {0x0 double}

三维元胞数组

        创建一个由空矩阵构成的3×4×2元胞数组。

C = cell(3,4,2);
size(C)

ans = 1×3

     3     4     2

根据现有数组克隆大小

        创建由大小与现有数组相同的空矩阵组成的元胞数组。

A = [7 9; 2 1; 8 3];
sz = size(A);
C = cell(sz)

C=3×2 cell
    {0x0 double}    {0x0 double}
    {0x0 double}    {0x0 double}
    {0x0 double}    {0x0 double}

        通常可以将前两行代码合并成一行:

C = cell(size(A));

提示

  • 使用cell函数创建一个由空矩阵组成的元胞数组,等同于将一个空矩阵赋给新建元胞数组的最后一个索引。例如,以下两个语句是等效的:

C = cell(3,4,2);
C{3,4,2} = [];

### 回答1: matlabnum2cell函数用于将矩阵或向量转换为单元格数组。其语法为: C = num2cell(A) 其A为要转换的矩阵或向量,C为转换后得到的单元格数组。 例如,将一个3x3的矩阵转换为单元格数组: A = [1 2 3; 4 5 6; 7 8 9]; C = num2cell(A) 得到的C为: C = [1] [2] [3] [4] [5] [6] [7] [8] [9] 可以看到,矩阵的每个元素都被转换为了一个单元格。 ### 回答2: MATLAB的num2cell函数是将数值数组转换为“cell”数组的函数。它的语法格式为: C = num2cell(A) 其,A是要转换的数值数组,C是转换后得到的cell数组。 在使用num2cell函数时,需要注意以下几点: 1. 数组A可以是任何大小的数值数组。 2. 如果A是多维数组,则C也是多维cell数组,其每个元素都对应于A的一个元素。 例如,如果A是一个大小为[2,3]的数组,则C也是一个大小为[2,3]的cell数组。 3. 如果A是一个向量,则C也是一个向量,其每个元素对应于A的一个元素。 例如,如果A是一个大小为[1,3]的行向量,则C也是一个大小为[1,3]的行向量。 4. 如果A是空矩阵,则C也是一个空的cell数组。 5. 如果A是一个复数数组,则C也是一个复数cell数组,其每个元素都是一个复数。 6. 如果转换后的cell数组C的元素是数值,则可以使用cell2mat函数将其转换回数值数组。 例如,如果C是一个大小为[2,3]的cell数组,则可以使用A = cell2mat(C)将其转换为一个大小为[2,3]的数值数组。 7. num2cell函数还可以接受一个可选的第二个参数,用于指定转换后的cell数组每个元素的类型。 例如,可以使用C = num2cell(A,1)将A的每个元素转换为一个单元素的cell数组,而不是将整个A转换为一个cell数组。 ### 回答3: MATLAB(num2cell)函数在对数值型数组进行处理时非常有用。该函数可将数值型数组转化为单元格数组。将数值型数组转化为单元格数组后,可以将其用于许多功能。例如,在模拟和数据分析,它可以用来存储各种类型的数据,包括文本、数字和字符串。 num2cell函数的语法格式如下: C = num2cell(A) 其 A 表示数值型数组,C 表示转换后的单元格数组。 num2cell函数将数值型数组 A 转换成单元格数组 C。该函数返回一个单元格数组,其的每个元素都是 A 的一个元素。因此,如果 A 是一个 M x N 的矩阵,那么 C 将是 M x N 的单元格数组。 使用num2cell函数可以对多维数组进行操作,也可以将num2cell函数嵌套使用,以实现更高级别的编程功能。 例如,我们可以使用num2cell函数将一个常规矩阵转换为单元格数组,然后使用单元格数组的拼接功能组合起来进行更复杂的操作。还可以使用 num2cell 函数将数字和字符串组合成一个单元格数组。 总之,在MATLABnum2cell函数非常强大,它可以将数值型数组转化为单元格数组,为实现更高级别的编程目标提供极大的灵活性。掌握num2cell函数用法可以让我们更加灵活地利用MATLAB进行数据分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值