文档

cell2struct

将单元格数组转换为结构数组

语法

structArray= cell2struct (cellArray字段昏暗的

描述

structArray= cell2struct (cellArray字段昏暗的创建一个结构数组,structArray,从单元格数组中包含的信息cellArray

字段参数指定结构数组的字段名。这个参数是字符数组、字符向量的单元格数组或字符串数组。

昏暗的参数告诉MATLAB®在创建结构数组时使用单元格数组的哪个轴。使用数字指定昏暗的

创建结构数组,其中的字段派生自N指定单元格数组的行N的字段名称字段参数中的数字1昏暗的论点。创建结构数组,其中的字段派生自指定单元格数组的列的字段名称字段参数中的数字2昏暗的论点。

structArray输出是一个结构数组N字段,N等于字段输入参数。结果结构中的字段数必须等于沿维度的单元格数昏暗的你想要皈依。

例子

创建下面的表,以便与本节中的示例一起使用。该表格列出了一家小型工程公司的员工信息。按行阅读表格,可以按部门显示员工的姓名。按列阅读表格可以看出每个员工在公司工作的年数。

5年 10年 15年
发展 李,里德,希尔 迪安,弗莱 莱恩,狐狸,国王
销售 豪,伯恩斯 科比,福特 大厅
管理 价格 克拉克,谢伊 西姆斯
质量 贝茨,灰色 纳什 凯,追逐
文档 劳埃德,年轻 莱恩,哈特,罗伊 沼泽

输入以下命令创建初始单元格数组员工

猛击={{“李”,“芦苇”,“山”},{‘院长’,‘Frye},…{‘道’,‘狐狸’,‘国王’}};销售={{“豪”、“烧伤”},{“科比”,“福特”},{“大厅”}};mgmt = {{'Price'}, {'Clark','Shea'}, {'Sims'};质量={{“贝茨”,“灰色”},{“纳什”},{“凯”、“追逐”}};docu ={{‘Lloyd’,‘年轻’},{“瑞恩”,“哈特”,“罗伊”},{“沼泽”}};雇员= [devel;销售;管理;定性; 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的结构:

  1. 将5 × 3单元格数组沿其第一个维度转换,以构造一个具有5个字段的3 × 1结构数组。单元格数组维数1沿线的每一行都成为结构数组中的一个字段:

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

    rowHeadings = {'development', 'sales', 'management',…“质量”、“文档'};
  2. 将单元格数组转换为结构数组,部门,就这个维度而言:

    depts = cell2struct(employees, rowHeadings, 1) depts = 3x1结构数组,包含字段:开发销售管理质量文档
  3. 使用这个面向行的结构来查找在公司工作了10年以上的开发人员的名字:

    depts(1:2).development ans = 'Lee' 'Reed' 'Hill' ans = 'Dean' 'Frye'

将相同的单元格数组转换为维度2的结构:

  1. 将5 × 3单元格数组沿其第二个维度转换,以构造具有3个字段的5 × 1结构数组。单元格数组沿维度2的每一列都成为结构数组中的一个字段:

  2. 沿着第二个(或水平)维度遍历单元格数组。列标题成为结果结构的字段:

    colheading ={'五年' '十年' '十五年'};years = cell2struct(employees, colheading, 2) years = 5x1 struct数组,包含字段:fiveYears tenYears fifteenYears
  3. 使用面向列的结构,显示有多少来自销售和文档部门的员工在公司工作了至少5年:

    [~, sales_5years, ~, ~, document_5years] =年。5years sales_5years = 'Howe' 'Burns' docu_5years = 'Lloyd' 'Young'

只将单元格数组的一部分转换为结构体:

  1. 只转换单元格数组的第一行和最后一行。这将产生一个3 × 1的结构数组,包含2个字段:

    rowHeadings = {'development', 'documentation'};depts = cell2struct(employees([1,5],:), rowHeadings, 1) depts = 3x1结构数组,包含字段:开发文档

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

    对于k=1:3 depts(k,:) end ans =开发:{'Lee' 'Reed' 'Hill'}文档:{'Lloyd' 'Young'} ans =开发:{'Dean' 'Frye'}文档:{'Ryan' 'Hart' 'Roy'} ans =开发:{'Lane' 'Fox' 'King'}文档:{'Marsh'}

扩展功能

R2006a之前介绍过