Если вы посмотрите документацию для unique
, есть возможность вернуть индекс вместе с отсортированным массивом. Вы можете указать, хотите ли вы, чтобы первое или последнее вхождение числа также возвращалось в индекс.
Например:
a=[5, 3, 4, 2, 1, 5, 4];
[b,order]=unique(a,'first')
возвращает
b=[1, 2, 3, 4, 5]
и m=[5, 4, 2, 3, 1]
Вы можете отсортировать массив заказов и сохранить следующий индекс
[~,index]=sort(order) %# use a throw-away variable instead of ~ for older versions
и, наконец, переиндексировать b
b=b(index)