Сортировка массива ячеек с пустыми элементами в Matlab

У меня есть массив ячеек в Matlab DataVal, который я хотел бы отсортировать. Некоторые элементы массива пусты. Любая идея, как сортировать элементы этого массива ячеек. При сортировке я бы предпочел пустые элементы в начале или в конце отсортированного массива.

DataVal

ans = 

    []
    [ 82.1000]
    [ 16.1500]
    [ 56.0200]
    []
    [ 74.9600]
    [ 35.1400]

Я использовал sort и sortrows. Обе эти команды игнорируют пустые элементы.

Спасибо


person Kiran    schedule 18.09.2013    source источник


Ответы (1)


Как насчет этого:

x = {
    []
    [ 82.1000]
    [ 16.1500]
    [ 56.0200]
    []
    [ 74.9600]
    [ 35.1400]
};

x_sorted = [cell(sum(cellfun(@isempty,x)),1) ; num2cell(sort(cell2mat(x)))]

Результат:

x_sorted = 
    []
    []
    [16.15]
    [35.14]
    [56.02]
    [74.96]
    [ 82.1]

Сначала мы преобразуем массив ячеек в вектор значений, сортируем их, а затем возвращаем обратно в виде массива ячеек. Наконец, мы добавляем исходное количество пустых ячеек обратно в начало, так как cell2mat в этом случае их игнорирует.

person Amro    schedule 18.09.2013
comment
Довольно аккуратно :) Удивительно - person Kiran; 18.09.2013