matlab - 如何按值对结构进行排序?

时间:2014-06-24 20:56:59

标签: matlab matlab-struct

我有这个结构:

s = 

p_10_50_10_70: 0.1176
p_10_50_15_10: 0.9235
p_10_50_15_70: 0.2456
 p_10_50_base: 0.0100
p_10_70_15_10: 0.0895
p_10_70_15_70: 0.0053
 p_10_70_base: 6.3711e-06
p_15_10_15_70: 0.1892
 p_15_10_base: 0.0047
 p_15_70_base: 0.3377
 p_5_30_10_50: 0.0864
 p_5_30_10_70: 0.0014
 p_5_30_15_10: 0.0654
 p_5_30_15_70: 0.6165
  p_5_30_5_70: 0.0052
  p_5_30_8_30: 0.8106
  p_5_30_8_70: 0.0378
  p_5_30_base: 0.6113
 p_5_70_10_50: 0.2215
 p_5_70_10_70: 0.7448
 p_5_70_15_10: 0.2444
 p_5_70_15_70: 0.0221
  p_5_70_8_30: 0.0024
  p_5_70_8_70: 0.5382
  p_5_70_base: 2.1956e-04
 p_8_30_10_50: 0.0699
 p_8_30_10_70: 8.1918e-04
 p_8_30_15_10: 0.0599
 p_8_30_15_70: 0.7169
  p_8_30_8_70: 0.0218
  p_8_30_base: 0.9146
 p_8_70_10_50: 0.5467
 p_8_70_10_70: 0.3395
 p_8_70_15_10: 0.5552
 p_8_70_15_70: 0.0775
  p_8_70_base: 0.0015

`

我想按值排序,我意识到这可能不是进行这种排序的最佳数据类型。我使用的matlab R2012b没有表数据类型,我怎样才能得到一个包含键名和值的数据结构,按数值排序?

如果我想按值排序,那么这个键值对数组的最佳数据类型是什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

看起来就是这样:

[~, idxs] = sort(cell2mat(struct2cell(s)));
s = orderfields(s, idxs);

编辑:至于你的最后一个问题,是的,我不确定有很多选择。唯一比你得到的更好的可能是一个类,一个字符串的单元格数组和一个相应值的向量,以及用于提高访问效率的setter / getter函数。