Сортировка массива ячеек - PullRequest
       23

Сортировка массива ячеек

2 голосов
/ 09 августа 2011

Я хочу отсортировать строки по их вторым записям, то есть по второму столбцу. Каждая запись второго столбца представляет собой массив символов (представляющий метку времени). Также могут отсутствовать значения, то есть запись во втором столбце может быть []. Как мне это сделать?

Ответы [ 2 ]

5 голосов
/ 09 августа 2011

вам нужно использовать функцию sortrows (), если вы хотите отсортировать матрицу A, тогда используйте

sorted_matrix = sortrows(A,2);

http://www.mathworks.com/help/techdoc/ref/sortrows.html

0 голосов
/ 09 августа 2011

Сначала я бы преобразовал метки времени из строк в числовые значения, используя функцию DATENUM . Затем вы захотите заменить содержимое пустых ячеек заполнителем, например NaN. Вы можете использовать функцию SORTROWS для сортировки по второму столбцу. Вот пример:

>> mat = {1 '1/1/10' 3; 4 [] 6; 7 '1/1/09' 9}  %# Sample cell array

mat = 

    [1]    '1/1/10'    [3]
    [4]          []    [6]
    [7]    '1/1/09'    [9]

>> validIndex = ~cellfun('isempty',mat(:,2));  %# Find non-empty indices
>> mat(validIndex,2) = num2cell(datenum(mat(validIndex,2)));  %# Convert dates
>> mat(~validIndex,2) = {NaN};  %# Replace empty cells with NaN
>> mat = sortrows(mat,2)  %# Sort based on the second column

mat = 

    [7]    [733774]    [9]
    [1]    [734139]    [3]
    [4]    [   NaN]    [6]

В этом случае значения NaN будут отсортированы снизу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...