Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:30   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在MATLAB中绘制3D图形?

我目前是一个初学者,我正在使用matlab进行数据分析。我有一个文本文件,第一行的数据格式如下:时间;波高1;波高2; .......我有列,直到波高19,行总计4000行。

第一列中的数据是秒。从第二列开始,是以米为单位的波高标高。目前,我想让Matlab在x轴上绘制一个3d图,在y轴上绘制波高,在y轴上绘制波高,并且波高对应于从1到19的波高数,即第2列第10行的数据有一个假设8m对应于波高1和第1列第10行的时间。

我尝试了以下方法:

clear; filename='abc.daf'; path='C:\D'; a=dlmread([path '\' filename],' ', 2, 1); [nrows,ncols]=size(a); t=a(1:nrows,1);%define t from text file for i=(1:20), j=(2:21); end wi=a(:,j); for k=(2:4000), l=k; end r=a(l,:); 但是每次我尝试尝试绘制它们时,for循环wi都可以正常工作,但是对于r = a(l,:) ;,该绘制只给了我最后一次数据,但是我希望对文件中的所有数据进行绘制。

有没有办法我可以做到这一点。很抱歉,这有点令人困惑,但是如果有人可以帮助我,我将非常感激。

谢谢!!!!!!!!!!



回答:

一旦像在变量上方的代码中那样加载数据, a应该是一个4000×20的数组。然后,您可以通过两种不同的方式创建3-D图。您可以使用函数PLOT3创建3-D线图,为每列波高程数据绘制一条线:

t = a(:,1); %# Your time vector for i = 2:20 %# Loop over remaining columns plot3(t,(i-1).*ones(4000,1),a(:,i)); %# Plot one column hold on; %# Continue plotting to the same axes end xlabel('Time'); %# Time on the x-axis ylabel('Wave number'); %# Wave number (1-19) on y-axis zlabel('Wave elevation'); %# Elevation on z-axis 在3-D中绘制数据的另一种方法是分别使用功能MESHSURF绘制网格或曲面图。这是一个例子:

h = surf(a(:,1),1:19,a(:,2:20)'); %'# Plot a colored surface set(h,'EdgeColor','none'); %# Turn off edge coloring (easier to see surface) xlabel('Time'); %# Time on the x-axis ylabel('Wave number'); %# Wave number (1-19) on y-axis zlabel('Wave elevation'); %# Elevation on z-axis

更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:14


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.