将mat文件中的字段保存为循环中的csv文件

时间:2017-11-15 15:24:02

标签: matlab csv save structure field

我有一个带有15个字段的.mat文件file_0_50_abcdef_ft.mat(例如cgbstpABstpACstAB等等。这15个领域是一个结构。 我需要从第一个结构中提取一个字段:cgb.ch,以及来自其他14个结构的两个字段(具有相同标签)(即poscllabmatnegcllabmat)。

一旦我提取它们,我需要将它们保存为单独的.csv文件。我想要获得的输出是:cgb_ch.csvstpAB_poscllabmat_0_50.csvstpAB_negcllabmat_0_50.csvstpAC_poscllabmat_0_50.csvstpAC_negcllabmat_0_50.csv,等等。

实现这一目标的最佳方法是什么? 我需要为几个.mat文件做这件事。

1 个答案:

答案 0 :(得分:1)

循环vars / field组合,创建文件名,使用动态字段名称访问数据并将其提供给csvwrite

这样的事情:

temp = load('file_0_50_abcdef_ft.mat');
varList  = {'cgb', 'stpAB', 'stpAC'};
subField = {{'ch'}, {'poscllabmat', 'negcllabmat'}, {'poscllabmat', 'negcllabmat'}};
for j = 1:numel(varList)
    for k = 1:numel(subField{j})
        fileName = [varList{j} '_' subField{j}{k} '.csv'];
        csvwrite(fileName,temp.(varList{j}).(subField{j}{k}));
    end
end

注意:根本没有错误检查。如果你的mat文件缺少一个变量,或者其中一个结构缺少一个字段,那么它就会出错。