主要内容

cell2struct

将元胞数组转换为结构体数组

    说明

    structArray = cell2struct(cellArray,fields) 根据元胞数组中包含的信息并使用指定的字段名称创建一个结构体数组。该函数将元胞数组的每行分配给结构体中对应的字段名称。

    示例

    structArray = cell2struct(cellArray,fields,dim) 沿元胞数组的维度 dim 将数据集分配给结构体中对应的字段名称。例如,为 dim 指定 2 以将元胞数组的每列分配给对应的字段名称。

    示例

    示例

    全部折叠

    创建一个存储五天高低温的元胞数组。

    T(1,:) = {"highs",[44,38,46,43,48]};
    T(2,:) = {"lows",[35,31,32,28,35]}
    T=2×2 cell array
        {["highs"]}    {[44 38 46 43 48]}
        {["lows" ]}    {[35 31 32 28 35]}
    
    

    使用该元胞数组中的第一列数据来定义结构体的字段名称。

    fields = [T{:,1}]
    fields = 1×2 string
        "highs"    "lows"
    
    

    将元胞数组的第二列中的温度数据复制到名为 temps 的元胞数组中。

    temps = T(:,2)
    temps=2×1 cell array
        {[44 38 46 43 48]}
        {[35 31 32 28 35]}
    
    

    temps 元胞数组和字段名称作为输入调用 cell2struct。MATLAB 将 temps 中的每行数据分配给对应的字段名称。

    Tstruct = cell2struct(temps,fields)
    Tstruct = struct with fields:
        highs: [44 38 46 43 48]
         lows: [35 31 32 28 35]
    
    

    对结构体进行索引以获得第三天的低温。

    Tstruct.lows(3)
    ans = 
    32
    

    创建一个包含匿名患者信息的元胞数组,这些信息包括身份证号、体温和血压。

    patients(1,:) = {"A134",98.5,[124 85]};
    patients(2,:) = {"B267",99.1,[109 77]};
    patients(3,:) = {"C889",97.9,[120 81]}
    patients=3×3 cell array
        {["A134"]}    {[98.5000]}    {[124 85]}
        {["B267"]}    {[99.1000]}    {[109 77]}
        {["C889"]}    {[97.9000]}    {[120 81]}
    
    

    创建一个用于该结构体的字段名称向量。

    fields = ["PatientID","BodyTemp","BloodPressure"];

    要将元胞数组中的每列数据与结构体中对应的字段名称相关联,请调用 cell2struct 并将维度设置为 2。

    patientStruct = cell2struct(patients,fields,2)
    patientStruct=3×1 struct array with fields:
        PatientID
        BodyTemp
        BloodPressure
    
    

    在新创建的结构体数组中检索患者 C889 的血压。

    patientC889BP = patientStruct(3).BloodPressure
    patientC889BP = 1×2
    
       120    81
    
    

    输入参数

    全部折叠

    要转换为结构体数组的元胞数组。

    结构体数组字段的名称,指定为字符串数组或字符向量元胞数组。字段名称的数量必须与沿 dim 指定的维度上元胞的数量匹配。

    沿其拆分元胞数组的维度,指定为正整数。例如,默认值 1 将元胞数组的每行分配给 fields 中对应的字段名称。指定 2 会将元胞数组的每列分配给对应的字段名称。

    扩展功能

    全部展开

    版本历史记录

    在 R2006a 之前推出