MATLAB:是否定义了字段名的顺序?

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)

字段名文档似乎并不保证每次都返回相同的顺序.但另一方面,秩序场的存在似乎意味着场名可以预测地返回一个潜在的,通常不变的顺序.

yuk*_*yuk 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
Run Code Online (Sandbox Code Playgroud)

更新:

以下是"列出结构字段"字幕下结构数据类型的MATLAB文档的引用:

字段按创建顺序显示.

希望这能回答你的问题.