我有2个向量的数据。 然后使用[n,xout] = hist(x,y)返回包含频率计数和bin位置的向量n和xout。 x是我的真实数据,y是我想要构建直方图的部分。 比我使用bar(xout,n)绘制直方图。最后,我将这个直方图与高斯拟合拟合。
现在我想知道我的真实数据(矢量x的每个点)位于直方图中的哪个位置? 有人可以帮我弄清楚吗?
答案 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
向量。