1

以下のような2Dデータセットを使用しています。

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

あなたはinterp2それを達成するために使うことができます!


(1-DベクトルX、長さN)およびY(1-Dベクトル、長さM)が、ヒストグラムで定義された値Z(行列、サイズM x N)を持つ軸上の離散座標を決定する場合。座標(XIYI)を使用して特定の1つのポイントの値を取得するには、次のようにします。

% 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 に答える
1

私はあなたがこれを意味すると思います:

[N、C] = hist3(X、...)は、数値ベクトルの1行2列のセル配列内のビンの中心の位置を返し、ヒストグラムをプロットしません。

そうは言っても、2Dポイントがあるx=[x1, x2]場合は、で最も近いポイントを検索し、CNで対応する値を取得するだけです。

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 に答える