2016-08-24 49 views
0

我試圖繪製密度爲複平面中隨機二次monic多項式的零點密度圖。事實上,我正在密謀!但是這只是一個小小的細節,讓我感到困擾:座標軸的值與圖中的點不匹配。這是我的代碼。在Matlab中繪製密度圖時顯示正確的座標軸值

n=2; 
p = [1 random('Uniform', -1, 1, [1,n])] 
roots(p) 
z = zeros(0); 
n = 2; 
for j=1:10000 
    p = [1 random('Uniform', -1, 1, [1,n])]; 
    R = roots(p); 
    z = [ z, R.' ]; 
end 
Re = real(z); 
Im = imag(z); 
[values, centers] = hist3([Im(:) Re(:)],[1000 1000]); 
imagesc(centers{:}, values,[0,10]); 
colorbar 
axis equal 
axis xy 
cmap = summer(max(values(:))); 
cmap(1:1,:) = 0; 
colormap(cmap); 

現在這裏是通過該代碼生成的圖。

plot

可以嘗試這個代碼,並檢查最大值(Re)和最大值(IM),其對應於實部的最大值(x軸)和虛部(y軸)。我有max(Re)= 1.6076(它總是接近1.5)和max(Im)= 0.9993(它總是接近1)。這些值與情節不符,這似乎是相反的。

如果我嘗試散射函數(失去密度和所有漂亮的視覺),我有正確的值。以下命令生成下圖。

scatter(Re(1,:), Im(1,:),'.') 

scatter

這清楚地表明,第一曲線實際上是(不旋轉,因爲我想先)是正確的,除了軸值。我需要幫助解決這個問題。謝謝。

PS:在答案here中得到這個圖的命令。請注意那裏的評論。我明確要求解決這個問題,並得到一個。給定的解決方案實際上在某些情況下工作,但在這個失敗,我不知道爲什麼。

回答

1

我相信你在找什麼應該是:

imagesc(centers{[2,1]}, values,[0,10]); 

順便說一句,你沒有其他職位發現問題是因爲樣本圖像都發生或多或少平方米。

+0

謝謝你的回答。我做了搜索和命令 ** imagesc(min(Re):00001:max(Re),min(Im):00001:max(Im),values,[0,10]); ** 工作得很好。你知道這個命令和你的命令有什麼區別嗎? – Integral

+0

在image/imagesc中,只會使用x(1)/ y(1)和x(end)/ y(end),其餘這些向量完全不相關。即x可能只是[min(Re)max(Re)],您仍然可以得到相同的結果。只要你把Re作爲x和Im作爲y,你就可以走了。使用中心只是一種方法,可以保證您獲得與hist3相同的下限/上限,而不用擔心它們如何通過hist3進行實際計算。 –

相關問題