0

私は、2次元(2D)フロー計算からの計算結果を含むテキストファイルを持っています。 Matlabで結果をプロットしたい。私はこの種のことを何年も前にやったことがありますが、どのように助言をしてくれたのかと忘れてしまいました。Matlab:1つのベクトルのデータから2Dプロット/アニメーションを作成する方法は?

結果ファイルのスニペットは次のとおりです。 左側の列は時間ステップです(例として時間ステップ45と46のデータのみを表示していますが、ファイルが長すぎてすべてのデータを送信できません)。右の列は私のための難しい部分です。 右側の列は、すべてのx-y点(2Dデータの単一列)に対応します。私はx値の数とy値の数を知っています。

私の問題は、(i)(ii)(ii)単一のタイムステップの2-Dプロットの右側の列をどのように分割するのか分かりません。

45.0000 1.0000 
    45.0000 0.9742 
    45.0000 0.9542 
    45.0000 0.9521 
    45.0000 0.9480 
    45.0000 0.9436 
    45.0000 0.9388 
    45.0000 0.9326 
    46.0000 1.0000 
    46.0000 0.9742 
    46.0000 0.9542 
    46.0000 0.9521 
    46.0000 0.9480 
    46.0000 0.9436 
    46.0000 0.9388 
    46.0000 0.9326 

...

私が最初にxとyデータの2Dプロットを作りたいです。次にアニメーションを作成したい(つまり、各タイムステップのプロット、おそらくその部分を描くことができます)。最も重要な部分は2Dプロットです。データのベクトルから適切なインデックスを作成して2Dプロットを作成する方法の例を教えてくれる人がいれば、私は非常に感謝しています。

+0

異なるタイムステップごとにさまざまなテキストファイルがあります...あなたの目標は各タイムステップで、アニメーションプロットの各タイムステップでデータをプロットしたいのですか?例えば、時間ステップ1で、ポイントを表示します。しばらく待ってから、時間ステップ2でポイントなどを表示します。毎回のステップが水平軸にあると仮定していますか?これは本質的に各時間ステップで点のバンドを持つ散布図のように見えるでしょうか? – rayryeng

+0

あなたの返信ありがとう、rayryeng。申し訳ありませんが、私は明確ではありませんでした。私は計算ごとに1つのテキストファイルを持っています。各テキストファイルにはすべての結果が含まれています。私は(1)各時間ステップごとに1つのx-yプロットを作成し、次に(2)すべてのプロットをアニメーションにまとめたい。私が最も関わっている部分は(1)です。私は質問を編集してより明確にします。 – user3292696

+1

ディレクトリを指定するとファイルがあり、各ファイルの中には基本的に2次元の点の行列があります。あなたは、各テキストファイルの2Dプロットを実行したい...アニメーションで、私はあなたがこれらのポイントのセットを別々に表示することを意味していると仮定していますか... ...あなたは図をクリアして、図の上に?新しいウィンドウが必要ですか?ファイルの名前は意味がありますか?つまり、あなたがそれらをプロットするはずの特定の順序はありますか?詳細を追加する必要があります。このような情報をもっと求め続ける必要はありません – rayryeng

答えて

0

私はあなたの質問を理解すれば、私はいくつか前提をしています。

私が理解したように、最初の列は測定されたフローデータのタイムステップと2番目の列を示します。 I 同じタイムステップで測定されたフローデータが異なる位置で測定され、各タイムステップのフロープロファイルをプロットすると仮定します。

この次のコードは、各タイムステップのために、すなわち1つの別個のプロットを使用して行うことができる。

%% separate plot for each timestep 
fid = fopen('test.txt'); 

while ~feof(fid) 
    C = textscan(fid,'%f %f',8); 
    figure(); 
    timestep = C{1}; 
    plot(C{2}); 
    title(num2str(timestep(1))); 
end 

次のコードを使用して生成することができるもの、図中のすべてのフロープロファイルを有するアニメーション:

%% animation 
fid = fopen('test.txt'); 

figure(); hold on; 
while ~feof(fid) 
    C = textscan(fid,'%f %f',8); 
    timestep = C{1}; 
    plot(C{2}, 'DisplayName', num2str(timestep(1))); 

    pause(1); 
end 

hold off; 
legend show; 
+0

ありがとう、snalx。はい、あなたの前提は正しいです。私がしなければならないことの一つは、タイムステップ毎にプロットを作ることです。だから、私の質問の例では、私は "45"と "46"のための別のプロットが必要です。左側の列の値が変更されたときに別のプロットを作成する方法はありますか?または、それが不可能な場合、各プロットに含めるべき一定数の値を指定することができますか?時間ステップごとに常にプロットする値の数は同じです。私はここではっきりしていることを望む。どうもありがとうございました。 – user3292696

+0

上のコード例は、各タイムステップごとに8つの測定値があるので、左の列の値を変更して機能する必要があります。あなたのデータでコードをテストしましたか? – snalx

+0

ありがとう、snalx。私は当初、あなたの例に関連していない問題を抱えていましたが、それは固定されていて、現在プロットは完全に機能しています。本当にありがとうございます。私はあなたに投票をしようとしましたが、私の評判が低すぎて記録できないというメッセージを受け取りました。 – user3292696

関連する問題