如何从多个.dat文件(或多个2d图形)绘制3d图形?

时间:2012-07-25 20:01:39

标签: matlab graph 3d 2d data-files

在我的项目中,我基本上需要使用MATLAB绘制3D彩色编码表面图,从多个.dat文件中输入文本文件'。 每个.dat文件都包含一个REFLECTION R的值列表,用于启动角度theta。每个文件用于特定的lambda(波长)值。因此,我需要绘制多个.dat文件。 MATLAB中的3D图形,其中x轴是θ,y轴是REFLECTION R,z是lambda,对于不同的文件是不同的。 每个.dat文件给出了θ与REFLECTION R的2D图。每个2D图根据lambda的值而变化。我不知何故需要使用不同的lambda值作为z轴来绘制3D图形。

在某种程度上,在每个文件中我都有参数x和y,当我获取多个文件时,每个文件都有不同的z值,我最终可以绘制一个2D图形。 那么有谁知道如何从这些多个.dat文件中获取输入并在MATLAB中绘制3D图形?

我希望我足够清楚,如果不随意问你的怀疑 谢谢:))

1 个答案:

答案 0 :(得分:1)

如果您可以提供数据,则可以更轻松地提供帮助,因为数据的组织方式非常重要。尽管如此,这是一个镜头。

我理解的问题是:如果我有多个文件,每个文件都将theta和R与lambda的单个值相关联,那么如何生成所有这些的3d图?我将假设每个文件包含相同的theta值。它有点复杂,但如果不这样做则很简单。

例如,假设您有三个文件:

  • lambda = 100:theta1 = [15 30 45 60 75],R1 = [49 56 61 65 67]
  • lambda = 200:theta2 = [15 30 45 60 75],R2 = [41 50 57 62 66]
  • lambda = 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')

example mesh plot

如果我有很多文件,我会做的是通过使用列出目录内容的脚本摄取所有文件并遍历每个文件来自动执行此操作,但您可以手动设置所有文件。这可能看起来像(改编自我的一个文件):

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-D Visualization,尤其是Creating 3-D Graphs。我开始的时候,我浏览了很多次。