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

时间:2017-07-17 10:11:39

标签: arrays excel matlab

我使用了一个名为data

的428×1单元阵列
function something(val1, val2){
 return val1+val2;
}
setInterval(function(){
 something(23,32);
}, 50);

这些结构都具有相同的结构

data = {[1×1 struct]
        [1×1 struct]
        ....
        [1x1 struct]}

所有428个单元格的结构字段相同,并且每个结构中的字段值都会发生变化。

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

我最终想要将这些数据导出为ex​​cel。

2 个答案:

答案 0 :(得分:1)

怎么样

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。

答案 1 :(得分:1)

让我们说你已经获得了你的nx1单元格结构数组data。此方法并不假设您的数据中包含4个字段,或者知道它们的名称。如果您包含一些try / catch逻辑,您甚至可以将它与具有不同字段名的结构一起使用。

您可以使用fieldnames

获取代表性结构的字段名称
fnames = fieldnames(data{1});

然后设置一些正确大小的输出单元格out

out = cell(numel(fnames), numel(data));

然后使用嵌套循环 1。循环遍历data 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');