Alc*_*ive 5 matlab data-structures
对于相同的输入结构,字段名是否总是返回相同的单元格数组,即使在不同的计算机,不同的操作系统和不同的MATLAB版本上也是如此?或者它可以不同地命名字段名称?例如:
myStructure = load myStructure;
x = fieldnames(myStructure);
% days later, diff computer, diff OS, and diff version of MATLAB...
y = fieldnames(myStructure);
x == y %?
Run Code Online (Sandbox Code Playgroud)
字段名的文档似乎并不保证每次都返回相同的顺序.但另一方面,秩序场的存在似乎意味着场名可以预测地返回一个潜在的,通常不变的顺序.
我相信结构字段是在创建时排序的.如果将结构保存到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
Run Code Online (Sandbox Code Playgroud)
更新:
以下是"列出结构字段"字幕下结构数据类型的MATLAB文档的引用:
字段按创建顺序显示.
希望这能回答你的问题.