Извините, я неправильно прочитал ваш вопрос: вот обновленный код
ranges = [1 3
4 7
8 11
12 13];
groups = size(ranges,1);
a = [ 1,3,13,11,5,9];
counter = zeros(groups,1);
for i=1:groups
counter(i) = sum(a>=ranges(i,1) & a<=ranges(i,2));
end
relative_counter = counter / numel(a);
Старый ответ:
Я не понимаю, как вы получаете границы вашей группы (вна ваш вопрос первая группа имеет 3 элемента, а вторая группа имеет 4?)
посмотрите на следующий код.(будьте осторожны и проверьте, как он должен вести себя на групповых границах)
groups =4;
a = [ 1,3,13,11,5,9];
range = max(a)-min(a);
rangePerGroup = range/groups;
a_noOffset = a-min(a);
counter = zeros(groups,1);
for i=1:groups
counter(i) = sum(a_noOffset>=rangePerGroup*(i-1) & a_noOffset<=rangePerGroup*i);
end
relative_counter = counter / numel(a);