2016-08-24 146 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进行实际计算。 –