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);

編集:あなたの最後の質問については、ええ、素晴らしいオプションがあるかどうかはわかりません。あなたが持っているものよりも優れている唯一のものは、文字列のセル配列と対応する値のベクトル、およびアクセスを効率的にするセッター/ゲッター関数を備えたクラスかもしれません。

于 2014-06-24T21:03:14.183 に答える