0

我有这个结构:

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,我怎样才能得到一个包含键名和值的数据结构,按数值排序?

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

谢谢!

4

1 回答 1

3

看起来这样做:

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

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

于 2014-06-24T21:03:14.183 回答