我正在尝试对原始数据进行分类以制成直方图。原始数据已保存在名为data [k]的数组中(请参阅下面的代码)。我指定了一些固定宽度为0.01的bin,间隔的上边界值已存储在名为z [i]的数组中。通过对z [i]和z [i + 1]之间每个间隔中数据点的数量进行计数,可以完成数据的合并。对于这个问题,我做了30个从0到0.3的间隔,间隔的宽度为0.01。
//在z中创建容器
zmin = 0.01;
for(i=0;i<30;i++){
z[i] = 0.0;
}
for(i=0;i<30;i++){
z[i] = zmin+i*zmin;
//binning the data
for(i=1;i<30;i++){
for (k=0;k<100000;k++){
if(data[k]>z[i-1] && data[k]<=z[i]){
bincount[i] += 1;
} //if
} //k loop
} //i loop
for (k=0;k<100000;k++){
if(data[k]<=z[0]){
bincount[0] += 1;
} //if
} //k loop
z [i]的元素是:
z [0] = 0.01,z [1] = 0.02,依此类推...
合并产生准确的结果,但是由于某些原因,即使我原始数据中的实际计数,z [5](= 0.06)和z [6](0.07)之间的间隔的bincount仍为0。不为零。类似地,z [6](= 0.07)和z [7](= 0.08)之间的区间的bincount给出了错误的结果,即上述两个区间的总计数。但是,当我在if语句中而不是z [6](我尝试过)中写0.07时,它给出了正确的结果。
我还验证了数组z [i]是否正确存储了值,这似乎很好。因此,对于为什么仅在具有边界z [6]的特定间隔处出现此问题,而其他bin给出正确的结果,我感到困惑。我在这里做错什么了吗?