Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我目前是一个初学者,我正在使用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中绘制数据的另一种方法是分别使用功能MESH或SURF绘制网格或曲面图。这是一个例子: 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 更多&回答... |
![]() |
![]() |