matlab,直方图如何在图中找到我的数据

时间:2014-06-19 16:12:29

标签: matlab histogram

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

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

2 个答案:

答案 0 :(得分:1)

[~, result] =  min(abs(bsxfun(@minus, y(:), x(:).')));

这为x中的每个值提供y中最接近元素的索引。因此,y(result)y中每个x最接近的元素。

示例:

>> 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

答案 1 :(得分:1)

您想使用histc

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

然后找到x的某个值为的bin:

bin = idx(x == 0.4);

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