4

データYのセットとXを中心とするビンのセットがある場合、HISTコマンドを使用して、各ビンにある各Yの数を見つけることができます。

N = hist(Y,X)

私が知りたいのは、各Yがどのビンに入るかを教えてくれる組み込み関数があるかどうかです。

[N,I] = histMod(Y,X)

Y(I == 1)がビン1のすべてのYを返すことを意味します。

私はこの関数の書き方を知っているので、MATLABにこれを行う組み込み関数がすでにあるかどうかだけ疑問に思っています。

4

2 に答える 2

7

関連する関数histcはこれを行いますが、ビンの中心ではなくビンのエッジを定義する必要があります。

Y = rand(1, 10);
edges = .1:.1:1;
[N, I] = histc(Y, edges);

bincentersが与えられた場合のエッジの計算も簡単です。ワンライナーで:

N = hist(Y, X);

になります

[Nc, Ic] = histc(Y, [-inf X(1:end-1) + diff(X)/2, inf]);

Nc == Nに加えて、最後に1つの余分な空のビンがあります(Yの値がinfに一致しないと想定しているため)。を参照してくださいdoc histc

于 2010-09-30T15:29:00.120 に答える
2

ビンの代わりにビンエッジを使用することに満足している場合は、

[N,bin] = histc(y,binedges)

動作します。Aaargh、MATLAB関数定義は非常に直感的ではありません

于 2010-09-30T15:41:10.243 に答える