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

时间:2011-02-25 16:13:19

标签: matlab data-structures

对于相同的输入结构,字段名是否总是返回相同的单元格数组,即使在不同的计算机,不同的操作系统和不同的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的存在似乎意味着字段名可以预测地返回一个潜在的,通常不变的顺序。

1 个答案:

答案 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文档的引用:

  

字段按照创建顺序显示。

希望这能回答你的问题。