Matlab中cell2struct函数使用

目录

语法

说明

示例


cell2struct函数是将元胞数组转换为结构体数组。 

语法

structArray = cell2struct(cellArray, fields, dim)

说明

structArray = cell2struct(cellArrayfieldsdim) 通过元胞数组 cellArray 中包含的信息创建一个结构体数组 structArray

   fields参数指定结构体数组的字段名称。此参数是一个字符数组、字符向量元胞数组或字符串数组。

        dim参数向 MATLAB® 指示创建结构体数组时要使用的元胞数组的轴。使用数值double指定dim。

        要使用从元胞数组的 N 行中获取的字段创建一个结构体数组,在fields参数中指定N个字段名称,在dim参数中指定数字 1。要使用从元胞数组的M列中获取的字段创建一个结构体数组,请在fields参数中指定M个字段名称,在dim参数中指定数字2。

  structArray 输出是具有N个字段的结构体数组,其中 N 等于fields输入参数中的字段数。生成的结构体中的字段数必须等于沿要转换的维度dim的元胞数。

示例

        创建下表以用于此部分中的示例。表中列出了有关一个工程公司的员工的信息。按行读取该表将显示按部门列出的员工姓名。按列读取该表将显示每个员工已在该公司工作的年数。

5 年10 年15 年
开发Lee, Reed, HillDean, FryeLane, Fox, King
销售Howe, BurnsKirby, FordHall
管理价格Clark, SheaSims
质量Bates, GrayNashKay, Chase
文档Lloyd, YoungRyan, Hart, RoyMarsh

        输入以下命令以创建初始元胞数组 employees

devel = {{'Lee','Reed','Hill'}, {'Dean','Frye'}, ...
   {'Lane','Fox','King'}};
sales = {{'Howe','Burns'}, {'Kirby','Ford'}, {'Hall'}};
mgmt = {{'Price'}, {'Clark','Shea'}, {'Sims'}};
qual = {{'Bates','Gray'}, {'Nash'}, {'Kay','Chase'}};
docu = {{'Lloyd','Young'}, {'Ryan','Hart','Roy'}, {'Marsh'}};

employees = [devel; sales; mgmt; qual; docu]
employees = 

    {1x3 cell}    {1x2 cell}    {1x3 cell}
    {1x2 cell}    {1x2 cell}    {1x1 cell}
    {1x1 cell}    {1x2 cell}    {1x1 cell}
    {1x2 cell}    {1x1 cell}    {1x2 cell}
    {1x2 cell}    {1x3 cell}    {1x1 cell}

        下面即是生成的元胞数组:

 将元胞数组转换为沿维度 1 的结构体:

        转换沿其第一个维度的 5×3 元胞数组以构造一个具有 5 个字段的 3×1 结构体。沿元胞数组的维度 1 的每一行将变为结构体数组中的一个字段:

        遍历第一个维度(即垂直维度),包含 5 行,每行的标题如下:

rowHeadings = {'development', 'sales', 'management', ...
   'quality', 'documentation'};

        将元胞数组转换为与此维度相关的结构体数组 depts:使用此面向行的结构体查找已在公司工作超过 10 年的开发员工的姓名:

将相同的元胞数组转换为沿维度 2 的结构体

        转换沿其第二个维度的 5×3 元胞数组以构造一个具有 3 个字段的 5×1 结构体。沿元胞数组的维度 2 的每一列将变为结构体数组中的一个字段:

        沿第二个维度(或水平维度)遍历元胞数组。列标题将变为生成的结构体的字段:

colHeadings = {'fiveYears' 'tenYears' 'fifteenYears'};

years = cell2struct(employees, colHeadings, 2)
years = 
5x1 struct array with fields:
    fiveYears
    tenYears
    fifteenYears

        使用列向结构体时,将显示已在公司工作至少 5 年的销售和文件部门的员工数。

[~, sales_5years, ~, ~, docu_5years] = years.fiveYears
sales_5years = 
    'Howe'    'Burns'
docu_5years = 
    'Lloyd'    'Young'

仅将元胞数组的一部分转换为结构体:

        仅转换元胞数组的第一行和最后一行。这将生成一个具有 2 个字段的 3×1 结构体数组:

rowHeadings = {'development', 'documentation'};

depts = cell2struct(employees([1,5],:), rowHeadings, 1)
depts = 
3x1 struct array with fields:
    development
    documentation

        显示对于所有三个时间段属于这些部门的员工:

for k=1:3
   depts(k,:)
end

ans = 
      development: {'Lee'  'Reed'  'Hill'}
    documentation: {'Lloyd'  'Young'}
ans = 
      development: {'Dean'  'Frye'}
    documentation: {'Ryan'  'Hart'  'Roy'}
ans = 
      development: {'Lane'  'Fox'  'King'}
    documentation: {'Marsh'}

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值