我从更大的矩阵中得到以下范围:
范围(a)中
ans =
94 153 144 59 79 90 131 64
我的教授要求我们:将范围划分为N = 10个等长段(以下称为“箱”),并为每个箱找到其边界(aj,bj)及其中心cj。 / p>
(5)将每个测量的细菌数xi放入下限小于或等于xi且上限大于xi的bin中;此后,对于每个bin计数,分配给它的xi的数量(= nj)。
(6)使用N = 10巴绘制测量的细菌计数的直方图。 尝试使用MATLAB函数hist(x,N)和bar(c,n)
我知道这很多,但我绝对没有这个家伙的指示,真的很感激帮助之手:)
答案 0 :(得分:8)
考虑以下示例,它应该解决所有问题:
%# 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')
请注意,这会正确处理最后一个bin(请阅读此related question以获取有关这些边缘情况的讨论)
答案 1 :(得分:3)
计算直方图:
range = [94 153 144 59 79 90 131 64]
[n,xout] = hist(range, 10)
xout
是bin中心,n
bin计数。
绘制条形图:
bar(xout,n)
计算bin边缘:
width = xout(2)-xout(1)
xoutmin = xout-width/2
xoutmax = xout+width/2