次のコードを検討してください。
n = histc(x, [edges(1) edges]);
n(1) = sum(x==edges(1));
n(end) = [];
投稿された質問によると、上記は次のように返されます。
- n(1): 一致する x の値をカウントします
edges(1)
- n(k) [k~=1]: 値 x(i) をカウントします
edges(k-1) <= x(i) < edges(k)
これは、彼の答えが境界を使用するという点で、 gnoviceソリューションとは異なります: edges(k-1) < x(i) <= edges(k)
(等号の位置に注意してください)。
実証するために、次の簡単な例を検討してください。
x = [0 1 1.5 2 2.5 4 6.5 8 10];
edges = 0:2:10;
>> n = fliplr(histc(-x,-fliplr(edges)))
n =
1 3 2 0 2 1
間隔に対応: 0 (0,2] (2,4] (4,6] (6,8] (8,10]
に対して:
>> n = histc(x, [edges(1) edges]);
>> n(1) = sum(x==edges(1));
>> n(end) = []
n =
1 3 2 1 1 1
間隔に対応: 0 [0,2) [2,4) [4,6) [6,8) [8,10)