Вы должны сначала решить, каковы критерии для определения границ ваших групп. Например, вы можете установить пороговое значение 50, поэтому любые значения, которые отличаются от ближайшего большего или меньшего значения, считаются находящимися в другой группе.
Вы можете решить это векторизованным способом, сначала отсортировав массив с помощью функции SORT , а затем найдя индексы в отсортированном массиве, где различия между соседними значениями превышают ваш порог (т. Е. Где границы группы) с использованием функций DIFF и FIND . Взяв различия между этими индексами (снова используя функцию DIFF ), вы получите вектор размеров для каждой группы, который можно использовать для разбиения отсортированного массива на массив ячеек с помощью функции MAT2CELL . Вот как будет выглядеть код:
threshold = 50;
array = [6712 7023 7510 7509 6718 7514 7509 6247];
sortedArray = sort(array);
nPerGroup = diff(find([1 (diff(sortedArray) > threshold) 1]));
groupArray = mat2cell(sortedArray,1,nPerGroup);
И groupArray
будут массивом ячеек 1 на 4, где каждая ячейка содержит набор значений для группы. Вот содержимое groupArray
для приведенного выше примера:
>> groupArray{:}
ans =
6247
ans =
6712 6718
ans =
7023
ans =
7509 7509 7510 7514