2

私ははるかに大きなマトリックスから次の範囲を持っています:

範囲(a)

ans =

94   153   144    59    79    90   131    64

私の教授は私たちに次のように求めています。範囲をN=10の等しい長さのセグメント(以下「ビン」と呼びます)に分割し、各ビンについて、その境界(aj、bj)とその中心cjを見つけます。

(5)測定された各細菌数xiを、下限がxi以下で、上限がxiより大きいビンに配置します。その後、各ビンについて、それに割り当てられた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ビンの中心、nビンの数です。

棒グラフのプロット:

 bar(xout,n)

ビンのエッジの計算:

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