2017-08-15 24 views
-1

私は等高線マップを与えるためにMATLABスクリプトを書こうとしています。輪郭マップは、100枚の画像から生成した入力から作成する必要があります。MATLAB異なるプロットから等高線マップをプロットする

ストーリーはこのようなものです:

私は最適化のための画像処理アルゴリズムを実行した100枚の画像を持っています。さて、私は彼らのエネルギー曲線を得ました。だから、私は100のエネルギー曲線を持っています。私はプロット上の点がより高密度であるところを私に示す輪郭マップを作成したい。 (エネルギー曲線は、反復の一定数の反復対エネルギーとしてプロットされている)

次の私の変数です:私はそれをよく説明し

energy(iteration,numImages) 

This is the image showing 100 energy curves plotted on the same figure

希望。

ありがとうございます。

+0

ようこそスタックオーバーフロー。あなたはすでに試したことを投稿できますか?これにより、より良いヘルプを得ることができます! – JCooke

+0

私は各曲線が通過しているすべての点に対して1を追加しようとしました。しかし、私はそのコードを動作させることができなかったし、それを3dマップ上に翻訳することができなかった。 –

+0

ヒートマップの種類を作成することはできますか?たとえば、 'imagesc'を使用します。 – obchardon

答えて

0

私はあなたのグラフを見て(そしてコメントも使用しています)、可能な方法の1つはplot3を使ってすべてのプロットの3Dで線をプロットすることです。私は、プロットのいくつかのオプションがあり plot3 plot を与える

x=(0:0.01:1)'; 

aexp=zeros(100,numel(x)); 
hold on 
for ii=1:100; 
%  aexp(ii,:)=exp((-x+ii/10)); %exponential 
    aexp(ii,:)=exp(-(x-ii/100).^2); %~gaussian 
%  aexp(ii,:)= x*ii; %linear increase 
    plot3(x,aexp(ii,:),ii*ones(1,numel(x))); 
end 
% set(gca,'yscale','log'); % uncomment if you need logscale. 

:そうするため

、あなたはこのようなコードを使用することができます。常にXYビューからプロットされます。私は手で変更しましたが、を使用することができます。私は単純なカウンターを使ってz方向にスペーシングを作っていることに注意してください。

同様に、の輪郭を使用してプロットすることができます。データは、forループで生成された私のコードについては、後に、/削除は、plot3をコメントして追加します。

contour(aexp) %outside the for loop, 

は、私は本当に私がプロットてる何世話をしていない Contour plot

通知すること。あなたはMatlab pageに輪郭に関する詳細を見つけることができます。

x軸は反復回数、y軸はエネルギー、z軸はいくつの領域からいくつの行が通過したかを示す情報であるとコメントしました。そのためにはqqという変数を作成してください(qq=number_of_lines(number of iterations,energy))。あなたが持っていない場合、エネルギーのための離散グリッドを作成します。反復回数は、とにかく離散的です。この機能は、あなたが考案しなければならない人ですが、私はあらゆるエネルギーと繰り返しごとに行数をチェックするものに行きます。この場合、yとxに依存するz関数があります。これは、等高線やサーフェスを使用する場合です。

上記の私の機能は、すべてのiiポイントに対して行を作成し、3d機能を持っています。別の余分なループのエディションは難しくありません。すべての点について同じ規則的なグリッドを持つことを忘れないでください。さもなければ問題が発生します。

+0

ご返信ありがとうございます。私の場合、x軸は「反復回数」、y軸は「エネルギー」、z軸はいくつの領域から何本の線が通過したかを示す情報でなければなりません。輪郭線としての線の密度を示す必要があります。あなたがこの新しい情報に照らしてもっと何かを提案するかもしれないなら、私は本当にそれを説得します。 –

+0

質問を編集しました。最後の2つの部分を確認します。あなたが探しているものなのかどうかは分かりません。 – Guto

+0

https://stackoverflow.com/questions/9134014/contour-plot-coloured-by-clustering-of-points-matlab このリンクは実際に私の問題を非常によく説明しています。この場合、変数XとYは単なるベクトルです。私は私のニーズに合わせてこのコードを修正しようとしています。たぶん、これを見ることができれば、私に別の視点を与えることができます。 ありがとうございます。 –

0

私はenergyにあるエネルギーに応じて色を使ってサーフェスプロットを作成する方法を説明します。私はこれをを使って生成されたグリッドでcontour関数を使って解決します。各画像は100と1000個のデータポイントに記述されている場合は、次のようにプロットが生成できるファイル:

% using stuff as random junk instead of energy 
numPoints = 1000; 
numFiles = 100; 
stuff = rand(1000,100); % replace with actual information 
[X, Y] = meshgrid(1:numFiles, 1:numPoints); 
contour(X,Y,stuff); 

またsurfを使用して3D表面プロットと同じロジックを作成することができます。

+0

ご返信ありがとうございます。私の場合、x軸は反復の回数で、y軸はエネルギーでなければならず、z軸はいくつの領域から何本の線が通過しているかを示す情報でなければなりません。輪郭線としての線の密度を示す必要があります。私はあなたのコードに似たようなことを試み、それぞれの行が 'stuff'の代わりに通過している各点に1を加えようとしましたが、失敗しました。 –

関連する問題