Другой вариант для этой ситуации - использовать функцию ACCUMARRAY , которая не требует, чтобы список сортировался первым.Это особенно полезно, если в item
должен быть набор чисел, охватывающий диапазон 1:N
, где N
- любое целочисленное значение.Вот как это будет работать для вашего примера:
item = [23; 23; 23; 22; 22; 20; 20]; %# A column vector of integers
counts = accumarray(item,1); %# Collect counts of each item into
%# a 23-by-1 array
Массив counts
- это массив 23 на 1, где элементы, индексированные по 23, 22 и 20, содержат числа 3, 2 и2 соответственно.Все остальные элементы равны 0 (т.е. не найдено ни одного счетчика для чисел от 1 до 19 или 21).
Если вы хотите получить список уникальных значений в item
и соответствующих им значений, выможно сделать это с помощью функции UNIQUE :
>> uniqueValues = unique(item) %# Get the unique values in item
uniqueValues =
20
22
23
>> counts = counts(uniqueValues) %# Get just the counts for each unique value
counts =
2
2
3