2016-08-24 8 views
0

私は、複素平面にランダムな2次モーメント多項式の零点の密度を持つプロットを作成しようとしています。実際、私はプロットしています!しかし、ちょっとした細かいところがあります。軸の値がプロット内の点と一致していません。ここに私のコードです。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

あなたはこのコードを試してみて、実数部の最大値(x軸)と虚部(y軸)に対応する最大値(Re)とMAX(IM)を、確認することができます。私はmax(Re)= 1.6076(常に1.5に近い)とmax(Im)= 0.9993(常に1に近い値)です。これらの値はプロットと一致しませんが、これは反対のようです。

私が散乱関数(密度を失い、すべての素晴らしいビジュアル)を試してみると、私は正しい値を持っています。次のコマンドは、以下の図を生成します。

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

scatter

これは明らかに、最初のプロットは、軸の値を除いて、正しい(私は最初考えていたように回転していない)、実際にあることを示しています。私はこれを解決するための助けが必要です。ありがとう。

PS:このプロットを作成するコマンドは、答えがhereになっています。そこにコメントを書き留めておきます。私は明示的にこの問題の解決策を求めて、それを得ました。与えられた解決策は実際にはいくつかのケースでは動作しましたが、この問題では失敗しました。理由はわかりません。私はあなたが探しているものと信じて

答えて

1

は次のようになります。

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

、あなたは他のポストに問題を発見していないサンプル画像はすべて、多かれ少なかれ正方形のことが起こるためです。

+0

ありがとうございます。私は検索とコマンドを作った。 ** imagesc(分):00001:最大(再)、分(イン):00001:最大(Im)、値、[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と同じ下限/上限を保証する方法に過ぎません。 –

関連する問題