首页 > 解决方案 > 误差散点图时间与风速(来自表格的数据)MATLAB

问题描述

我试图在 MATLAB 中制作一个简单的散点图,x 轴为时间,y 轴为风速。我将文本文件中的数据作为表格加载,然后尝试使用 table2array 进行绘图,因为它需要数值而不是表格数据。我也尝试使用 double 并得到另一个错误。

错误消息:使用散点图时出错(第 55 行) 输入参数必须是数字或可以转换为双精度的对象。

windconversions 错误(第 18 行) scatter(time,wnd_TS)

我不确定是否将时间作为字符串也是一个问题。

T = readtable('allunderway.txt', 'HeaderLines', 2);
%A = table2array(T)

date = T(:,1);
time = T(:,2);
wnd_TD = T(:,10);
wnd_TS = T(:,11);
table2array(wnd_TS);
table2array(time);

%double(wnd_TS);
scatter(time,wnd_TS)

数据文件

标签: arraysmatlabscatter-plottabular

解决方案


访问表中包含的数据的一种更简单的方法是使用点表示法,如T.VarN,其中 N 是您感兴趣的列的编号。

在您的代码中,您仅使用“时间”进行绘图,但这仅包含小时、分钟和秒。我怀疑对于您的图形分析,您需要日期和时间的组合。

可以对日期时间执行算术加法,但是要求两个变量具有相同的格式。通过将两个日期转换为格式“MM/dd/yyyy HH:mm:SS”,您实际上是在修改变量的数据。但是,如文档中所述:

由于文件第一列(“日期”)中的数据没有时间信息,因此生成的日期时间值的时间默认为午夜。由于文件第二列(“时间”)中的数据没有关联的日期,因此 datetime 值的日期默认为当前日期。

将变量 date 和 time 加在一起时,可以将 date 的 date ('MM/dd/yyyy') 添加time 的 time ('HH:mm:SS')

以下是日期时间转换和添加的示例。转换前的变量日期和时间:

date = 05/04/2011
time = 00:00:42

转换后:

date = 05/04/2011 00:00:00
time = 06/01/2018 00:00:42

添加两个:

05/04/2011 00:00:42

读取表格并绘制散点图的代码:

%Read table.
T = readtable('allunderway.txt', 'HeaderLines', 2);

%Access data of interest from table.
date = T.Var1;
time = T.Var2;
wnd_TS = T.Var11;

%Convert variable time to datetime.
time = datetime(time,'Format','HH:mm:SS');

%Add hours, minutes and seconds to variable date.
date = datetime(date,'Format','MM/dd/yyyy HH:mm:SS');

%Add month, day and year to variable time.
time = datetime(time,'Format','MM/dd/yyyy HH:mm:SS');

%Combine date and time variables.
fullt = date+timeofday(time);

scatter(fullt,wnd_TS);

代码的输出是所需的散点图:

在此处输入图像描述

您可以在此处找到有关从不同变量组合日期和时间的更多信息。


推荐阅读