4

OK、MATLABのコードは次のとおりです。

data = [1 1.5 2 3 4 4.5 5 6 7 7 7 0 0 0];

histc(data, [1:1:5])
histc(data, [1:1:5, inf])
histc(data, [-inf, 1:1:5])

これは以下を出力します:

ans = 2     1     1     2     1
ans = 2     1     1     2     5     0
ans = 3     2     1     1     2     1

私の質問は、ビンサイズでinfを使用すると(この場合は> = 5を意味する)、MATLABが役に立たない0を返すのはなぜですか?

常にゼロではないでしょうか?ヘルプには、出力は常にビンサイズと同じ長さになると書かれていますが、この場合、それは悪い仕様ではありませんか?

4

1 に答える 1

7

これは実際にはHISTCの正しい動作です。構文を使用する場合:

n = histc(x,edges);

次に、ドキュメントから:

n(k)は、edges(k)<= x(i)<edges(k + 1)の場合、値x(i)をカウントします。最後のビンは、edges(end)に一致するxの値をカウントします。

したがって、指定する最後のエッジ値は、それに完全に一致するものの数を返します。infが最後のエッジ値である場合、それは0をカウントします(つまり、データにinfはありません)。5が最後のエッジ値である場合、データの1つの値と完全に一致します。

于 2009-06-12T19:14:26.980 に答える