对于相同的输入结构,字段名是否总是返回相同的单元格数组,即使在不同的计算机,不同的操作系统和不同的MATLAB版本上也是如此?或者它可以不同地命名字段名称? E.g:
myStructure = load myStructure;
x = fieldnames(myStructure);
% days later, diff computer, diff OS, and diff version of MATLAB...
y = fieldnames(myStructure);
x == y %?
documentation for fieldnames似乎没有承诺每次都返回相同的订单。但另一方面,orderfields的存在似乎意味着字段名可以预测地返回一个潜在的,通常不变的顺序。
答案 0 :(得分:8)
我相信结构字段是在创建时排序的。如果将结构保存到mat文件中并稍后使用另一个MATLAB打开它,则将保留该顺序。您始终可以使用ORDERFIELDS功能重新排序字段。您可以通过多种不同的方式进行排序(按字母顺序排序,使用单元格数组,其他结构或排列向量),请参阅文档以获取更多详细信息。
顺便说一下,字段顺序不会影响结构比较。
s1 = struct('a',0,'b',1)
s1 =
a: 0
b: 1
s2 = struct('b',1,'a',0)
s2 =
b: 1
a: 0
isequal(s1,s2)
ans =
1
s1=orderfields(s1,s2)
s1 =
b: 1
a: 0
<强>更新强>:
以下是“列出结构字段”字幕下structure data type的MATLAB文档的引用:
字段按照创建顺序显示。
希望这能回答你的问题。