Как отсортировать массив ячеек, который включает в себя массивы? - PullRequest
1 голос
/ 07 февраля 2012

Я бы хотел отсортировать массив ячеек по одному из столбцов.Массив создается функцией textcan.В Интернете есть несколько ответов, но я до сих пор не могу заставить их работать.У меня есть следующий массив:

>> DATA

DATA = 

    {303427x1 cell}    {303427x1 cell}    {303427x1 cell}    {303427x1 cell}    [303427x1 uint32]    [303427x1 double]    [303427x1 uint32]    [303427x1 int32]    {303427x1 cell}

Важным является шестой столбец, время которого конвертируется функцией datenum.Я хочу отсортировать все данные по этому столбцу, но со ссылкой на другие столбцы.Нормальная сортировка или горечь не работает для меня.Не могли бы вы помочь мне, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Я так понимаю, вы хотите отсортировать внутри каждой ячейки DATA, верно? Функция datenum производит серийные метки времени, начиная с «нулевого года», поэтому они могут быть отсортированы в обычном порядке.

times = DATA{6};
[~,idx] = sort(times,'ascend');
for i=1:length(DATA)
    DATA{i} = DATA{i}(idx);
end
1 голос
/ 07 февраля 2012

Вы можете избежать цикла for в ответе @ reve_etrange, используя CELLFUN после получения индекса сортировки idx.

DATA = cellfun(@(x) x(idx), DATA, 'UniformOutput', false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...