最初に行うことは、データの 2D ヒストグラムを計算することです。これは、次の方法で実行できます。
% Size of the histogram matrix
Nx = 160;
Ny = 160;
% Choose the bounds of the histogram to match min/max of data samples.
% (you could alternatively use fixed bound, e.g. +/- 4)
ValMaxX = max(real(Noisy_Data));
ValMinX = min(real(Noisy_Data));
ValMaxY = max(imag(Noisy_Data));
ValMinY = min(imag(Noisy_Data));
dX = (ValMaxX-ValMinX)/(Nx-1);
dY = (ValMaxY-ValMinY)/(Ny-1);
% Figure out which bin each data sample fall into
IdxX = 1+floor((real(Noisy_Data)-ValMinX)/dX);
IdxY = 1+floor((imag(Noisy_Data)-ValMinY)/dY);
H = zeros(Ny,Nx);
for i=1:N
if (IdxX(i) >= 1 && IdxX(i) <= Nx && IdxY(i) >= 1 && IdxY(i) <= Ny)
% Increment histogram count
H(IdxY(i),IdxX(i)) = H(IdxY(i),IdxX(i)) + 1;
end
end
Nx
パラメータをNy
いじって、プロットの希望の解像度を調整できることに注意してください。ヒストグラムが大きくなればなるほど、(シミュレーションのパラメーターによって制御される) より多くのデータ サンプルN
が必要になることに注意してください。むらのあるプロットが得られるのを避けるために、ヒストグラム ビンに十分なデータが必要になります。
次に、この回答に基づいてヒストグラムをカラー マップとしてプロットできます。その際、ヒストグラムのゼロ以外のすべてのビンに定数を追加して、値がゼロのビン用にホワイト バンドを予約することをお勧めします。これにより、散布図との相関が向上します。これは次の方法で実行できます。
% Colormap that approximate the sample figures you've posted
map = [1 1 1;0 0 1;0 1 1;1 1 0;1 0 0];
% Boost histogram values greater than zero so they don't fall in the
% white band of the colormap.
S = size(map,1);
Hmax = max(max(H));
bias = (Hmax-S)/(S-1);
idx = find(H>0);
H(idx) = H(idx) + bias;
% Plot the histogram
pcolor([0:Nx-1]*dX+ValMinX, [0:Ny-1]*dY+ValMinY, H);
shading flat;
colormap(map);
1000000 に増やしN
た後、サンプルに従って生成されたデータの次のプロットが得られます。