Matlab 根据值对结构中的字段进行排序

Matlab 根据值对结构中的字段进行排序,matlab,sorting,struct,Matlab,Sorting,Struct,假设我有一个结构: MyStruct.a = 12; MyStruct.b = 22; MyStruct.c = 32; 我是否可以修改它,以便根据字段的值对字段进行排序: MyStruct c: 32 b: 22 a: 12 orderfields方法允许根据字段名或其他结构/单元格数组对结构进行排序,但不能按值进行排序。orderfields具有基于排列数组排序的位置。这是一个排列数组。像这样的方法应该会奏效: [~,I] = sort(cell2mat(struct2cell(MyS

假设我有一个结构:

MyStruct.a = 12;
MyStruct.b = 22;
MyStruct.c = 32;

我是否可以修改它,以便根据字段的值对字段进行排序:

MyStruct
c: 32
b: 22
a: 12

orderfields
方法允许根据字段名或其他结构/单元格数组对结构进行排序,但不能按值进行排序。

orderfields
具有基于排列数组排序的位置。这是一个排列数组。像这样的方法应该会奏效:

[~,I] = sort(cell2mat(struct2cell(MyStruct)));
I = flip(I); % reverse ordering to get larger elements first
MyStruct = orderfields(MyStruct,I);

orderfields
具有基于排列数组进行排序的位置。这是一个排列数组。像这样的方法应该会奏效:

[~,I] = sort(cell2mat(struct2cell(MyStruct)));
I = flip(I); % reverse ordering to get larger elements first
MyStruct = orderfields(MyStruct,I);

这个顺序是基于字段名的吗?我需要基于价值的订单。但我明白了一般的想法,@RM25483答案是类似的,并根据值获得正确的排列数组。@Mansoor:你说得对,已修复(使用与其他答案不同的语法)。顺序是基于字段名的吗?我需要基于价值的订单。但我看到了大致的想法,@RM25483答案是类似的,并根据值获得正确的排列数组。@Mansoor:你说得对,已修复(使用与其他答案不同的语法)。