Похоже, что если целью кода является просто создание списка уникальных значений в Y, вы можете просто использовать unique(Y)
. например:
>> m = 10;
>> Y = floor(rand(m,1)*5+1)
Y =
5
1
5
4
2
2
1
5
1
4
>> unique(Y)
ans =
1
2
4
5
теперь выходные данные вашей функции имеют их в порядке их первого появления в списке. например,
classes =
5
1
4
2
, если это важно, вам понадобится что-то вроде этого:
>> [sortedClasses idx] = unique(Y,"first")
sortedClasses =
1
2
4
5
idx =
2
5
4
1
>> unsortedClasess = Y(sort(idx))
unsortedClasess =
5
1
4
2
и unique
, и sort
довольно хорошо векторизованы для скорости. А удаление повторного расширения classes
предотвратит повторное копирование переменных, что приведет к значительным накладным расходам, если у вас будет очень большое количество классов.