我有这个结构:
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没有表数据类型,我怎样才能得到一个包含键名和值的数据结构,按数值排序?
如果我想按值排序,那么这个键值对数组的最佳数据类型是什么?
谢谢!
答案 0 :(得分:3)
看起来就是这样:
[~, idxs] = sort(cell2mat(struct2cell(s)));
s = orderfields(s, idxs);
编辑:至于你的最后一个问题,是的,我不确定有很多选择。唯一比你得到的更好的可能是一个类,一个字符串的单元格数组和一个相应值的向量,以及用于提高访问效率的setter / getter函数。