Arrays MATLAB:如何用相同的字段将结构制表

Arrays MATLAB:如何用相同的字段将结构制表,arrays,excel,matlab,Arrays,Excel,Matlab,我使用了一个称为data的428×1单元阵列 data = {[1×1 struct] [1×1 struct] .... [1x1 struct]} 这些结构都具有相同的结构 data {2,1} >>struct with fields additional_model_information: 'H Series,S3150-S0-AW-04-02-C-F421,' ceiling_fan_size_di

我使用了一个称为data的428×1单元阵列

data = {[1×1 struct]
        [1×1 struct]
        ....
        [1x1 struct]}
这些结构都具有相同的结构

data {2,1}

>>struct with fields

         additional_model_information: 'H Series,S3150-S0-AW-04-02-C-F421,'
 ceiling_fan_size_diameters_in_inches: '60'
      airflow_efficiency_cfm_watt_low: '727'
     airflow_efficiency_cfm_watt_high: '392'
所有428单元的结构字段都相同,每个结构中的字段值都会发生变化

如何创建一个表,将所有结构放在一起,以便显示每个字段的所有字段值?Pehaps使用嵌套for循环

我最终想将这些数据导出到excel。

怎么样

T = cell(length(data) , 4);
for k = 1 : length(data)
   T(k , :) = {data{k}.additional_model_information , ...
               data{k}.ceiling_fan_size_diameters_in_inches, ...
               data{k}.airflow_efficiency_cfm_watt_low, ...
               data{k}.airflow_efficiency_cfm_watt_high};
end
然后您可以使用
xlswrite
导出到excel。

如何

T = cell(length(data) , 4);
for k = 1 : length(data)
   T(k , :) = {data{k}.additional_model_information , ...
               data{k}.ceiling_fan_size_diameters_in_inches, ...
               data{k}.airflow_efficiency_cfm_watt_low, ...
               data{k}.airflow_efficiency_cfm_watt_high};
end

然后您可以使用
xlswrite
导出到excel。

假设您已经获得了结构的nx1单元数组,
数据。此方法不假设您的数据中有4个字段,也不假设您知道这些字段的调用方式。如果包含一些
try
/
catch
逻辑,甚至可以将其用于具有不同字段名的结构


您可以使用
fieldnames

fnames = fieldnames(data{1});
然后设置一些大小正确的输出单元格数组
out

out = cell(numel(fnames), numel(data));
然后使用嵌套循环来1。循环查看
数据中的项目。
2。循环查看字段名

for n = 1:numel(data)
    for field = 1:numel(fnames)
        temp = data{n};
        out{field, n} = temp.(fnames{field});
    end
end
最后,将字段名追加为第一列

out = [fnames, out];
并将单元格数组写入Excel文件

%        File location,      cell array,  sheet,  cell
xlswrite('C:\...\test.xlsx', out,         1,      'A1');

假设您已经获得了nx1单元结构数组,
data
。此方法不假设您的数据中有4个字段,也不假设您知道这些字段的调用方式。如果包含一些
try
/
catch
逻辑,甚至可以将其用于具有不同字段名的结构


您可以使用
fieldnames

fnames = fieldnames(data{1});
然后设置一些大小正确的输出单元格数组
out

out = cell(numel(fnames), numel(data));
然后使用嵌套循环来1。循环查看
数据中的项目。
2。循环查看字段名

for n = 1:numel(data)
    for field = 1:numel(fnames)
        temp = data{n};
        out{field, n} = temp.(fnames{field});
    end
end
最后,将字段名追加为第一列

out = [fnames, out];
并将单元格数组写入Excel文件

%        File location,      cell array,  sheet,  cell
xlswrite('C:\...\test.xlsx', out,         1,      'A1');

您使用的是什么版本的Matlab?您是否真的希望将此数据保存在
表格中
,或者只要可以导出到Excel,
单元格数组
是否可以工作?MATLAB R2017a。只要我能导出到Excel@Wolfie,你使用的是什么版本的Matlab?您是否真的希望将此数据保存在
表格中
,或者只要可以导出到Excel,
单元格数组
是否可以工作?MATLAB R2017a。只要我能导出到Excel@wolfiet谢谢你。我得到的回应是:引用不存在的字段“附加模型信息”。无标题(第8行)out{field,n}=temp.(fnames{field})中出错;这意味着
data{n}
中的结构不包含字段
附加的\u model\u信息
。。。尝试在
try中包围
out{field,n}
行;out{field,n}=temp.(fnames{field});捕捉;结束。您将得到一个空的单元格元素,您期望该字段,但它将跳过错误。非常感谢。它工作得非常好。我刚刚相信数据{n}中的结构包含数字、文本和浮点值。很高兴我能帮上忙。。。把这个答案标记为接受,如果它解决了你的问题:“我会的。”谢谢,谢谢。我得到的回应是:引用不存在的字段“附加模型信息”。无标题(第8行)out{field,n}=temp.(fnames{field})中出错;这意味着
data{n}
中的结构不包含字段
附加的\u model\u信息
。。。尝试在
try中包围
out{field,n}
行;out{field,n}=temp.(fnames{field});捕捉;结束。您将得到一个空的单元格元素,您期望该字段,但它将跳过错误。非常感谢。它工作得非常好。我刚刚相信数据{n}中的结构包含数字、文本和浮点值。很高兴我能帮上忙。。。把这个答案标记为接受,如果它解决了你的问题:“我会的。”非常感谢。