2010-11-23 2 views
3

Моя проблема заключается в том, чтобы отсортировать массив ячеек с учетом только первый элемент каждой ячейки в этом векторе:Сортировка массива ячеек первым элементом каждой ячейки

array_A={[3 1 5] [1 6 2] [2 4 1]} 

Я хочу, чтобы отсортировать array_A , первый элемент каждой ячейки, как это:

array_A={[*1* 6 2] [*2* 4 1] [*3* 1 5]} 

у вас есть какие-либо идеи о том, как я могу решить эту проблему, таким образом, что это может быть сделано рекурсивно для тысяч ячеек?

ответ

4

Самый простой может быть просто связать array_A для создания числового массива и сортировки на основе этого. Если векторы длинны или разной длины, вы можете сначала извлечь первый элемент каждого элемента массива ячеек и отсортировать его.

Другими словами:

%# extract the first number from each element of array_A 
firstElement = cellfun(@(x)x(1),array_A); 
%# sort (the ~ discards the first output argument of sort) 
[~,sortIdx] = sort(firstElement); 
%# sort array_A using the proper sort order 
array_A_sorted = array_A(sortIdx); 
+0

+1 Чёрт! Просто избили меня. – gnovice 2010-11-23 22:09:57