【问题标题】:Mismatch in Histogram.直方图中不匹配。
【发布时间】:2018-12-29 07:15:51
【问题描述】:

我正在尝试从 excel 文件中的附加数据集中绘制直方图。我有 2 个问题(Q.2 更重要)。可以从此链接访问相关的 csv 文件: CSV files

1.为什么两个直方图是不同的,尽管使用了完全相同的 bin 和 bin 大小。

aa = xlsread('LF_NPV_Branch_Run.csv','C2:C828');
bb = xlsread('RES_Cob.csv','A1:CV827');
cc = aa*ones(1,100);
dev=bb-cc;
err_a=dev';

nbins = 20;
bound_n=min([floor(min(min(err_a))/10)*10,-10])
bound_p=max([ceil(max(max(err_a))/10)*10,10])
bins = linspace(bound_n,bound_p,nbins)

hist(err_a, bins)

figure(2)
hist(err_a(:), bins)

2.对于图 2,虽然最高 bin 的数字显示为 ~38000,但是当我使用中心的 bin(零)计算数字时,点数应该是 63039(这超过了Y 轴),而不是 ~38000。这种明显不匹配的原因是什么?

val = dev(dev > bins(10) & dev < bins(11));
size(val)

【问题讨论】:

    标签: matlab plot statistics histogram


    【解决方案1】:

    通常情况下,如果你有多个问题,你应该分开问,但我可以看到这两个问题是密切相关的。

    如果您阅读MATLAB's documentation for hist(x,xbins)

    如果 xbins 是均匀间隔值的向量,则 hist 使用这些值作为 bin 中心。

    bin(10) 为中心的 bin 的 bin 边缘实际上是

    lower=(bins(9)+bins(10))/2
    upper=(bins(10)+bins(11))/2
    

    因此,要回答您的 Q2,您应该会发现以下结果与图中所示的 bin 大小匹配:

    val = dev(dev > lower & dev <= upper);
    size(val)
    

    如果你想让bins 成为边缘,你应该使用histogram(err_a(:), bins)。见Specify Bin Edges of Histogram


    第一季度:

    err_a 是一个 100x827 矩阵; err_a(:) 使其成为 82700x1 列向量。

    hist(m, bins) 针对bins 中指定的每个 bin 中心,为m 中的每一列返回一个 bin。在您的情况下,err_a 有 827 列。对于每个 bin 中心,hist(err_a, bins) 给出 827 个结果,这就是每个 bin 中心都有一组列的原因。另一方面,hist(err_a(:), bins) 每个 bin 中心只给出 1 个结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-31
      • 2014-09-24
      • 2015-10-23
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      相关资源
      最近更新 更多