MATLAB - 获取每个元素的字段名称

时间:2014-03-10 09:00:26

标签: arrays matlab field

当我调用fieldnames(md)时,我有一个md类中所有元素的列表。

现在md中的每个元素都有许多子类,这些子类有自己的子元素,例如fieldnames(md)返回的第一个项称为mesh,当我调用fieldnames(mesh)时,我得到另一个字符串列表,其中包含来自mesh的所有项目,就是这样。

此处的目标是将所有md子类中的所有项目写入文本文件。

我尝试了以下内容:

 mfields = fieldnames(md);
 fid = fopen('textfile.txt','w'); 
 for i=1:numel(mfields)
       for j=1:numel(fieldnames(mfields{i}))
            fprintf(fid,'%s\r\n',fieldnames(mfields{i}))
       end
 end

但显然字段名不以char为参数。我是matlab的新手,所以请建议是否有其他功能可以完成这项工作

非常感谢

1 个答案:

答案 0 :(得分:0)

试试这个:

 mfields = fieldnames(md);
 fid = fopen('textfile.txt','w'); 
 for i=1:numel(mfields)
       %// Check if the field is a struct itself, otherwise it will not have any subfields.
       if isstruct(md.(mfields{i}))
           subfields=fieldnames(md.(mfields{i}));
       else
          %// Put a space so that it will still display the root field name when there are no subfields
          subfields = {' '};
       end

       %// Loop through all the subfields
       for j=1:numel(subfields)
            fprintf(fid,'%s\r\n',subfields{j})   %// Or  fprintf(fid,'%s\t%s\r\n',mfields{i}, subfields{j})
       end
 end