2012-03-18 1 views
2

으로 알파벳 문자열의 셀 어레이는, 내가 좋아하는 셀 배열이 있습니다.정렬 매트랩 성

names_sorted = { 
    'Roger Adrian', 
    'John Doe', 
    'Jeremy Jason Taylor', 
    'Jane Watkins' 
    } 

내가이 일을 우아 방법을 알고 : 내 예, 그것은되는 나올 것입니다. 예를 들어 공간에서 토큰 화하고 별도의 last_names 셀 배열을 만들고 정렬 한 다음 원래 배열에 색인을 적용 할 수 있습니다.

내 질문에 더 좋은 방법이 있습니까?

누군가 데이터베이스의 사람들 이름과 관련하여 만들 수없는 가정 목록을 생각해 내기 때문에 내 이름이 모두 "FIRST MIDDLE LAST" 또는 "FIRST LAST"입니다. 나는 확인했다.

+0

내가 아는 한, 당신은 보조 배열을 정렬하고 원래 하나에 색인을 적용해야한다, 나는 돈을 알고 MATLAB에서 유일하게 정렬 기능 ': 다행히도, 그에 대한 간단한 정규 표현식이있다 정렬 조건을 지정하게하지만 ... 이제 호기심을 갖게되었습니다. – Castilho

답변

3

모든 이름의 길이가 같으면 sortrows을 사용할 수는 있지만 어쨌든 배열 패딩과 수정이 필요하므로 이전에 "LAST FIRST MIDDLE"으로 변환하는 것이 더 낫습니다. sort을 적용하십시오.

names = {'John Doe';'Roger Adrian';'John Fitzgerald Kennedy'}; 
names_rearranged = regexprep(names,'(.*) (\w*)$','$2 $1') 
names_rearranged = 
    'Doe John' 
    'Adrian Roger' 
    'Kennedy John Fitzgerald' 

[names_rearranged_sorted, idx_sorted] = sort(names_rearranged); 

names_sorted = names(idx_sorted) 
names_sorted = 
    'Roger Adrian' 
    'John Doe' 
    'John Fitzgerald Kennedy'