【问题标题】:matlab, histogram how to find my data in the plotmatlab,直方图如何在图中找到我的数据
【发布时间】:2014-06-19 16:12:28
【问题描述】:

我的数据包含在 2 个向量中。 然后使用 [n,xout] = hist(x,y) 返回包含频率计数和 bin 位置的向量 n 和 xout。 x 是我的真实数据,y 是我想要构建直方图的部分。 比我使用 bar(xout,n) 来绘制直方图。最后我用高斯拟合来拟合这个直方图。

现在我想知道我的真实数据(向量 x 的每个点)在直方图中的位置? 有人可以帮我弄清楚吗?

【问题讨论】:

    标签: matlab histogram


    【解决方案1】:
    [~, result] =  min(abs(bsxfun(@minus, y(:), x(:).')));
    

    这为x 中的每个值提供了y 中最近元素的索引。所以y(result) 是每个xy 中最接近的元素。

    例子:

    >> x = [0.4 1.6 5.3 4.2 3.1 7.8];
    >> y = [0 2 4 6 8];
    >> [~, result] =  min(abs(bsxfun(@minus, y(:), x(:).')))
    result =
         1     2     4     3     3     5
    >> y(result)
    ans =
         0     2     6     4     4     8
    

    【讨论】:

    • 但是如何在直方图中找到 x 的每个点的位置?
    • 我希望在做直方图后找到 x=0.4 或 x=1.6 的位置
    • @user3714919 好吧,这就是我的答案提供的,不是吗?对于x(1)等于0.4,result(1)1,告诉你x(1)在第一个区间;或者y(result(1))0,告诉你那个区间的中心
    • 好的,我现在明白了。但是当我为我的结果做准备时,我发现我所有的点都在区间 21、23 中,而我的直方图中几乎到处都有,这让我感到困惑。我的 y = [-4:0.2:2] 有什么问题吗
    【解决方案2】:

    你想使用histc

    [binCounts, idx] = histc(x, y);
    

    然后找到x的某个值所在的bin:

    bin = idx(x == 0.4);
    

    请注意,因为 histc 第二个输入不是像 hist 这样的中心,而是每个 bin 的最终值。因此,您可能需要更改您的 y 向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 2015-10-20
      • 2013-09-04
      • 1970-01-01
      • 2013-01-18
      相关资源
      最近更新 更多