【问题标题】:How to construct unequal width histograms with Matlab?如何用 Matlab 构造不等宽直方图?
【发布时间】:2011-01-23 16:01:21
【问题描述】:

我想用不等的 bin(间隔)构造一个直方图。Matlab 只构造具有相等 bin 的直方图,就好像它是一个图表一样..!!!

请帮助我...非常感谢!

【问题讨论】:

    标签: matlab histogram


    【解决方案1】:

    这是一个例子:

    x = randn(100,1)*3;           %# some random data
    e = [-10 -5 -3 -1 1 2 3 20];  %# edges of intervals:  e(i) <= x < end(i+1)
    c = histc(x,e);               %# get count in each interval
    bar(e, c, 'histc')            %# bar plot
    set(gca, 'xlim',[e(1) e(end)])
    

    【讨论】:

    • 非常感谢...我使用您的解决方案为我的学习环境构建了一个函数..
    • 有没有办法让所有的 bin 都具有相同的 xsize,无论它实际上有多大?
    • @useretothepowerof2pi:我不明白,如果你想要等宽的 bin,只需使用常规的 HIST 函数。上面代码的整个想法是我们想要不同宽度的不规则间隔
    • 我的意思是,我希望 bin 的大小不相等,但图形宽度要相同。
    • @useretothepowerof2pi: 哦,也许你可以省略上面调用中的“x”位置,而使用bar(c, 'histc')。然后可以自定义轴的XTickLabels自己放置正确的标签
    【解决方案2】:

    2 个解决方案:

    1. centers 指定 bin hist 的第二个参数。
    2. 用 with 指定 bin Edges histc 的第二个参数。这 功能需要更进一步 处理,因为它不 直接生成图表 - 跟随 使用示例的链接。

    【讨论】:

      【解决方案3】:

      您可以构建自己的直方图工具来创建您喜欢的自定义直方图。

      • 使用 histc 确定哪些 bin 每个点都在里面。

      • 然后使用 accumarray 统计每个 bin 的元素个数。

      • 然后使用 bar 绘制所选宽度的条形。或者干脆创建 给定大小的补丁。使用补丁 为此。

      或者更简单地说,只需使用 hist。

      hist(rand(1000,1),[0 .1 .3 .6 1])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-08
        • 1970-01-01
        • 1970-01-01
        • 2013-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多