2014-06-24 3 views
0

나는이 구조체가 :matlab - 값으로 구조체를 정렬하려면 어떻게해야합니까?

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

필드를 정렬하면 어떤 것이 나을까요? 물론, 구조체를 출력 할 때, 값은 멋지게 정렬 될 것입니다. 그러나 순서에 따라 값에 액세스하려면 여전히 농구를 통과해야합니까? 다른 것은 - 배열, 구조체 배열, cellarray - 사용하기 쉽습니다. – user1735003

답변

3

가 보이는 :

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

편집 : 당신의 마지막 질문에 관해서는, 그래 나는 좋은 옵션이 확실하지 않다. 당신이 가진 것보다 더 좋은 점은 문자열의 셀 배열과 상응하는 값의 벡터 및 액세스를 효율적으로하는 setter/getter 함수를 가진 클래스 일 수 있습니다.

+0

정말 대단합니다.이 비트는 무엇입니까 [~, idxs] ='약입니까? – Ash

+2

@Ash 오, 그건 더미 변수에 대한 '현대적인'Matlab 표기법입니다. 귀하의 버전의 Matlab이 그것을 지원하지 않는다면'~'을'더미 '또는 다른 것으로 대체하십시오. –