如何在if条件下使用一些预定义的数组元素

时间:2019-05-02 12:46:58

标签: c

我正在尝试对原始数据进行分类以制成直方图。原始数据已保存在名为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给出正确的结果,我感到困惑。我在这里做错什么了吗?

0 个答案:

没有答案