Сортировать данные Matlab по группам - PullRequest
0 голосов
/ 27 октября 2018

У меня есть столбец числовых данных (импортированных из Excel), и я хотел бы отсортировать каждую из записей столбца в 4 разные группы на основе пользовательских диапазонов размеров, а затем рассчитать, сколько записей столбцов в каждой группе, в виде дробиот общего количества записей в столбце.

Например, если мой столбец был 1,3,13,11,5,9.Я хочу подсчитать, сколько записей вписывается в группу 1-3, сколько вписывается в группу 4-7 и так далее.Затем вычислите количество записей в каждой группе как долю от общего количества записей в столбце.то есть, 6 в этом примере.

Кто-нибудь знает, как это сделать лучше всего?

Спасибо

Ханна:)

1 Ответ

0 голосов
/ 27 октября 2018

Извините, я неправильно прочитал ваш вопрос: вот обновленный код

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...