【问题标题】:Limit data values displayed in MATLAB histogram限制 MATLAB 直方图中显示的数据值
【发布时间】:2012-02-03 03:20:22
【问题描述】:

我有一个向量,我想为其打印数据的直方图。该数据范围从 -100 到 +100。外边缘周围的数据量微不足道,因此我不想看到它。我最感兴趣的是显示从 -20 到 +20 的数据。

1.) 如何限制该窗口在我的直方图上打印?

我在 0 处拥有的数据量与我在数据集中任何位置拥有的数据量至少相差 10:1。当我打印直方图时,元素频率的布局丢失了,因为它的数量超过了0。

2.) 有没有办法可以将 0 值的数量缩放为 -1 条目数量的三倍?

我预计这个数据集(一般而言)会呈指数下降,因此频率为 -1 的三倍可以很容易地让我看到其他数据的频率。

【问题讨论】:

    标签: matlab histogram


    【解决方案1】:

    你可以使用类似的东西

    binCenters = -20:5:20;
    [N,X] = hist(V,binCenters);
    
    N = N./scalingVector;
    bar(X(2:end-1),N(2:end-1));
    

    请注意,代码从条形图中排除了 NX 的极值,因为它们包含小于 -20 和大于 20 的值的数量。此外,通过适当地构建 scalingVector,您可以随意缩放N。

    【讨论】:

      【解决方案2】:

      您也可以使用 [-20,20] 范围之外的任何值

      subsetData=data(abs(data)<=20)
      

      【讨论】:

        【解决方案3】:

        1) 您可以通过设置 X 轴范围来限制您在绘图上看到的直方图范围:

        xlim([-20 20])
        

        在 hist 命令中设置 bins 很好,但要记住 bins 之外的所有值都会落入最左边和最右边的 bin 中。所以无论如何你都需要设置坐标轴范围。

        2) 如果不同 bin 中的值之间存在很大差异,一种方法是将 Y 轴上的值转换为对数刻度。不幸的是,仅将 Y 轴设置为对数 (set(gca,'YScale','log')) 不适用于条形图。使用 histhistc 计算直方图(取决于您是否要指定 bin 中心或边缘)并记录值:

        [y, xbin] = hist(data);
        bar(xbin, log2(y) ,'hist')
        

        【讨论】:

          【解决方案4】:

          直方图有几种不同的调用方法。我强烈建议您阅读有关该函数的文档 (doc hist)

          您正在寻找的是在直方图箱中放入自定义范围。这在一定程度上取决于您想要多少个垃圾箱,但这样的事情会起作用。

          Data=randn(1000,1)*20;
          hist(Data,-20:20);
          

          如果您愿意,您也可以更改分箱的频率。您还可以使用 xaxis([-20 20]) 命令更改轴,以便只关注 -20 到 20 的范围。您也可以忽略 0 处的 bin,方法是使用 y 轴并限制值以排除 0 bin。在不知道你到底想要什么的情况下,我只能给你建议。

          【讨论】:

            猜你喜欢
            • 2012-06-08
            • 2014-04-22
            • 2015-04-15
            • 2013-01-18
            • 1970-01-01
            • 2013-07-15
            • 2016-07-22
            • 1970-01-01
            相关资源
            最近更新 更多