1

我使用如下所示的二维数据集,

37.0235000000000    18.4548000000000
28.4454000000000    15.7814000000000
34.6958000000000    20.9239000000000
26.0374000000000    17.1070000000000
27.1619000000000    17.6757000000000
28.4101000000000    15.9183000000000
33.7340000000000    17.1615000000000
34.7948000000000    18.2695000000000
34.5622000000000    19.3793000000000
36.2884000000000    18.4551000000000
26.1695000000000    16.8195000000000
26.2090000000000    14.2081000000000
26.0264000000000    21.8923000000000
35.8194000000000    18.4811000000000

创建 3D 直方图。

在此处输入图像描述

如何找到网格上某个点的直方图值?例如,如果[34.7948000000000 18.2695000000000]给定点,我想为网格上的给定点找到直方图的对应值。

4

3 回答 3

2

我用了这段代码

point = feat_vec(i,:); // take the point given by the data set
X = centers{1}(1,:); // take center of the bins at one dimension
Y = centers{2}(1,:); // take center of the bins at other dim.  

distanceX = abs(X-point(1)); // find distance to all bin centers at one dimension 
distanceY = abs(Y-point(2)); // find distance to center points of other dimension

[~,indexX] = min(distanceX); // find the index of minimum distant center point
[~,indexY] = min(distanceY); // find the index of minimum distant center point for other dimension
于 2012-11-19T21:09:41.700 回答
1

我想你的意思是:

[N,C] = hist3(X,...) 在 1×2 数值向量元胞数组中返回 bin 中心的位置,并且不绘制直方图。

话虽如此,如果您有一个 2D 点x=[x1, x2],您只需查找 中最近的点C,并取 N 中的相应值。

在 Matlab 代码中:

[N, C] = hist3(data); % with your data format...
[~,indX] = min(abs(C{1}-x(1)));
[~,indY] = min(abs(C{2}-x(2)));
result = N(indX,indY);

完毕。(你可以把它变成你自己的功能说result = hist_val(data, x)。)


编辑:

我刚刚看到,我的答案本质上只是@Erogol 答案的更详细版本。

于 2012-11-20T05:35:54.387 回答
1

你可以用它interp2来实现!


如果X(一维向量,长度N)和Y(一维向量,长度MZ )确定直方图已定义值(矩阵,大小M x N)的轴上的离散坐标。XI使用坐标 ( , )获取一个特定点的值YI可以通过以下方式完成:

% generate grid
[XM, YM] = meshgrid(X, Y);
% interpolate desired value
ZI = interp2(XM, YM, Z, XI, YI, 'spline')

一般来说,这类问题是插值问题。如果您想获取多个点的值,则必须以与上面代码中类似的方式为它们生成网格。例如,您还可以使用另一种插值方法linear(请参阅链接文档!)

于 2012-11-19T20:12:27.457 回答