Разделение диапазона на контейнеры в Matlab - PullRequest
2 голосов
/ 27 октября 2011

У меня есть следующий диапазон из гораздо большей матрицы:

Диапазон (а)

ans =

94   153   144    59    79    90   131    64

Мой профессор просит нас: Разделить диапазон на N = 10 сегментов равной длины (в дальнейшем называемых «ячейками»), и для каждого ячейки найти его границы (aj, bj), а также центр cj. 1008 *

(5) Поместите каждое измеренное количество бактерий xi в ту корзину, нижняя граница которой меньше или равна xi, а верхняя граница больше xi; после этого для каждого бина отсчитывают число xi, назначенное ему (= nj).

(6) Постройте гистограмму измеренных количеств бактерий, используя N = 10 столбцов. Попробуйте в MATLAB использовать функции Hist (x, N) и bar (c, n)

Я знаю, что это много, но у меня нет абсолютно никаких инструкций от этого парня, и я был бы очень признателен за помощь :)

Ответы [ 2 ]

8 голосов
/ 27 октября 2011

Рассмотрим следующий пример, он должен решить все ваши вопросы:

%# random data vector of integers
M = randi([50 200], [100 1]);

%# compute bins
nbins = 10;
binEdges = linspace(min(M),max(M),nbins+1);
aj = binEdges(1:end-1);     %# bins lower edge
bj = binEdges(2:end);       %# bins upper edge
cj = ( aj + bj ) ./ 2;      %# bins center

%# assign values to bins
[~,binIdx] = histc(M, [binEdges(1:end-1) Inf]);

%# count number of values in each bin
nj = accumarray(binIdx, 1, [nbins 1], @sum);

%# plot histogram
bar(cj,nj,'hist')
set(gca, 'XTick',binEdges, 'XLim',[binEdges(1) binEdges(end)])
xlabel('Bins'), ylabel('Counts'), title('histogram of measured bacterial')

Обратите внимание, что это правильно обрабатывает последний бин (прочитайте этот связанный вопрос для обсуждения этих крайних случаев)

screenshot

3 голосов
/ 27 октября 2011

вычислительная гистограмма:

range = [94   153   144    59    79    90   131    64]
[n,xout] = hist(range, 10)

xout - центры бинов, n количество бинов.

гистограмма:

 bar(xout,n)

вычисление ребер бина:

width = xout(2)-xout(1)
xoutmin = xout-width/2
xoutmax = xout+width/2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...