-2

我需要帮助。我正在使用使用 hist 命令的 matlab 代码,我需要 java 等效代码或 matlab 中 hist 函数背后的逻辑,以便我可以在 java 或 c 中对其进行编码。提前致谢。

4

1 回答 1

1

直方图的简单逻辑(假设您知道恒定宽度的 bin,并且您不需要最有效的代码):

float x[50]; // assumed to be array of data values
float binWidth, firstBin; // bins of width binWidth; first one centered on firstBin
int numBins; // number of bins
int *bins, tooSmall = 0, tooLarge = 0, ii, indx;

bins = (int*)calloc(numBins * sizeof(int)); // allocate, set to zero

for(ii = 0; ii < 50; ii++) {
  indx = floor((x[ii]-firstBin)/binWidth + 0.5);
  if (index < 0 ) {
    tooSmall++;
    }
    elseif (index >= numBins) {
      tooLarge++;
    }
    else {
      bins[indx]++;
    }
  }
}

最后,您有一个数据的直方图x,其中有两个计数器对应于不适合该范围的数据(低于或超出范围)。

免责声明:在没有编译器测试的情况下编写。看起来“大约正确” - 在依赖它之前先在已知案例上进行测试。

于 2013-06-30T05:04:22.363 回答