2

我从一个更大的矩阵中得到以下范围:

范围(一)

答案=

94   153   144    59    79    90   131    64

我的教授要求我们:将范围划分为 N = 10 个等长段(以下称为“bins”),并为每个 bin 找到它的边界 (aj, bj) 以及它的中心 cj。

(5)将每个测量的细菌计数xi放入下限小于或等于xi且上限大于xi的bin中;此后,对于每个 bin 计算分配给它的 xi 的数量(= nj)。

(6) 使用 N = 10 条绘制测量的细菌计数的直方图。试试 MATLAB 函数 hist(x,N) 和 bar(c, n)

我知道这很多,但是我绝对没有这个家伙的指示,非常感谢您的帮助:)

4

2 回答 2

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')

请注意,这可以正确处理最后一个垃圾箱(阅读此相关问题以讨论这些边缘情况)

截屏

于 2011-10-27T07:12:12.740 回答
3

计算直方图:

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

xout是 bin 中心,nbin 计数。

绘制条形图:

 bar(xout,n)

计算 bin 边缘:

width = xout(2)-xout(1)
xoutmin = xout-width/2
xoutmax = xout+width/2
于 2011-10-27T06:59:46.290 回答