Как использовать некоторые предопределенные элементы массива в условии if - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь скопировать необработанные данные для создания гистограммы. Необработанные данные были сохранены в массиве с именем data [k] (см. Код ниже). Я указал бины некоторой фиксированной ширины 0,01, а верхние граничные значения интервалов были сохранены в массиве с именем 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 и т. Д. *

Биннинг дает точные результаты, однако по какой-то причине bincount для интервала между z [5] (= 0,06) и z [6] (0,07) оказывается равным 0, хотя фактическое количество в моих исходных данных ненулевой Аналогичным образом, учет для интервала между z [6] (= 0,07) и z [7] (= 0,08) дает ошибочный результат, который представляет собой общее количество двух упомянутых выше интервалов. Однако, когда я пишу 0,07 внутри оператора if вместо z [6] (который я пробовал отдельно), это дает правильный результат.

Я также проверил, правильно ли массив z [i] хранит значения, что кажется нормальным. Поэтому меня смущает, почему эта проблема возникает только для конкретных интервалов с границей z [6], в то время как другие бины дают правильные результаты. Я что-то здесь не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...