Это немного в стороне, но если все структуры в вашем массиве ячеек L
имеют одинаковые поля (obs
и n
в этом случае), то имеет смысл хранить L
как структурный массив 1 на N вместо массива ячеек 1 на N структур 1 на 1.
Чтобы преобразовать массив структур размером 1 на N в массив структур размером 1 на N, вы можете сделать следующее:
L = [L{:}];
Или вы можете создать массив структур напрямую, используя один вызов STRUCT вместо создания массива структур ячеек, как вы делали в вашем примере:
L = struct('obs',{[1 2 3 4],[6 7 5 3]},'n',{4,2});
Теперь решение от Jonas стало еще проще:
[junk,sortIndex] = sort([L.n]); %# Collect field n into an array and sort it
sortedL = L(sortIndex); %# Apply the sort to L