0

私のプロジェクトでは、基本的に、MATLAB を使用して、複数の .dat ファイル「一種のテキスト ファイル」から入力を取得して、3D 色分けされた曲面グラフをプロットする必要があります。各 .dat ファイルには、角度シータを起動するための REFLECTION R wrt の値のリストが含まれています。各ファイルはラムダ (波長) の特定の値用です。したがって、複数の .dat ファイルを取得して、プロットする必要があります。MATLAB の 3D グラフ。x 軸はシータ、y 軸は REFLECTION R、z はファイルごとに異なるラムダになります。各 .dat ファイルは、theta と REFLECTION R の 2D グラフを提供します。各 2D グラフは、ラムダの値に基づいて別のグラフとは異なります。3D グラフを描画するには、z 軸としてラムダのさまざまな値を使用する必要があります。

ある意味で、各ファイルにはパラメーター x と y があり、それぞれ異なる値の z を持つ複数のファイルを取得すると、最終的に 2D グラフをプロットできます。これらの複数の .dat ファイルから入力を取得し、MATLAB で 3D グラフを描画する方法を知っている人はいますか?

私が十分に明確であることを願っています。そうでない場合は、遠慮なく質問してください。

4

1 に答える 1

1

データを提供できる場合は、データがどのように構成されているかが重要であるため、支援が容易になります。それにもかかわらず、ここにショットがあります。

質問は次のとおりです。複数のファイルがあり、それぞれがシータと R をラムダの 1 つの値に関連付けている場合、これらすべての 3D プロットを作成するにはどうすればよいですか? すべてのファイルに同じ値の theta が含まれていると仮定します。もう少し複雑ですが、そうでない場合は簡単です。

たとえば、次の 3 つのファイルがあるとします。

  • ラムダ=100: theta1 = [15 30 45 60 75]、R1 = [49 56 61 65 67]
  • ラムダ = 200: theta2 = [15 30 45 60 75]、R2 = [41 50 57 62 66]
  • ラムダ=300: theta3 = [15 30 45 60 75]、R3 = [34 45 53 60 65]

この場合、meshgrid を使用して x および y ベクトルを作成し、R 値を連結できます。その後、任意の数の 3D プロット コマンドでプロットできます。メッシュを表示します。

[theta, lambda] = meshgrid(theta1, [100 200 300]);
R = [R1; R2; R3];
mesh(theta,lambda,R)
xlabel('theta')
ylabel('lambda')
zlabel('R')

メッシュ プロットの例

多くのファイルがある場合、ディレクトリの内容をリストし、各ファイルを反復処理するスクリプトを使用してすべてのファイルを取り込むことでこれを自動化しますが、代わりにすべてを手動で設定することもできます。これは次のようになります (私のファイルの 1 つから適応):

fileNameArray = dir('*.dat');
for i = 1:length(fileNameArray)
    datStruct = importdata(datStruct(i).name;
    theta(:,i) = datStruct.data(:,1);
    R(:,i) = datStruct.data(:,2);
end

これは、データが列にあることを前提としています。theta と R の両方を行列に入れると、theta を調べて、すべてのエントリが同じであることを確認できます。

また、MATLAB ドキュメンテーションの 3次元可視化、特に3 次元グラフの作成を確認することをお勧めします。私が始めたとき、私はこれらを何度も閲覧しました。

于 2012-07-28T00:18:30.987 に答える