2009-06-12 318 views
4

好吧,这里是在MATLAB一些代码:我使用histc错误,还是这个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 

我的问题是,为什么MATLAB返回一个无用的0,当你在bin大小使用INF(来在这种情况下意味着> = 5)?

它不会总是零吗?该帮助表示输出将始终与仓大小相同,但在这种情况下,这不是一个糟糕的规格吗?

回答

7

这实际上是HISTC的正确行为。当您使用的语法:

n = histc(x,edges); 

然后,从文档:

N(k)的计数值x(i)如边缘(K) < = X(I)<边缘第(k + 1)。最后一个箱子 计算与边缘匹配的x的任何值(结束)。

因此,您给出的最后一个边缘值返回恰好与匹配的数量。当inf是最后的边缘值时,其计数为0(即,在数据中没有infs)。当5是最后一个边缘值时,它在数据中完全匹配1个值。

相关问题