【问题标题】:simple ANSI C histogram function for 1D array of double-precision data?用于一维双精度数据数组的简单 ANSI C 直方图函数?
【发布时间】:2012-01-13 18:00:43
【问题描述】:

是否有通用的解决方案可以从输入的一维双精度数据数组创建一维直方图数据数组?

不想在 C 中绘制直方图,我只需要一些东西来通过合并数据来创建直方图一维数组。

有人可以帮我理解 C 中的分箱(例如循环)代码可能是什么样子吗?假设最小和最大数据点是已知的,并且我们想要使用不同的 bin 的可变数量(例如hist_pts)。

【问题讨论】:

    标签: c histogram


    【解决方案1】:
    int* bin = calloc(hist_pts,sizeof(int));
    float interval = (float)(max - min ) / num_bins;
    for (i=0;i<N;i++)
        bin[ (int)((value[i]- min)/interval) ]++;
    //don't forget to `free(bin) after you use it.
    

    【讨论】:

    • 谢谢 AShelly,N 是数组 value 中的元素数吗?
    • @ggkmath 不,是样本数。
    • @AShelly - 考虑修改这个答案。 num_bins 的使用方式表明它是一个变量。 C99 允许可变长度数组,但不允许这种初始化。如果 num_bins 是一个整数变量,则 interval 将是一个 int - 这可能不是 OP 想要的。如果 num_bins 不是整数,则不会编译。
    • 应该是一样的,@beginner
    • 好点,@Throwback1986。错过了“变量hist_pts”部分。更正。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多