Arrays 误差散点图时间与风速(表中数据)MATLAB
我试图在MATLAB中绘制一个简单的散点图,时间在x轴上,风速在y轴上。我将文本文件中的数据作为表格加载,然后尝试使用table2array进行绘图,因为它需要的是数值,而不是表格数据。我还试着使用double,但又出现了一个错误 错误消息:错误使用分散(第55行)输入参数必须是数字或可以转换为双精度的对象 风转换错误(第18行)散射(时间,wnd_TS) 我不确定将时间作为字符串是否也是一个问题Arrays 误差散点图时间与风速(表中数据)MATLAB,arrays,matlab,scatter-plot,tabular,Arrays,Matlab,Scatter Plot,Tabular,我试图在MATLAB中绘制一个简单的散点图,时间在x轴上,风速在y轴上。我将文本文件中的数据作为表格加载,然后尝试使用table2array进行绘图,因为它需要的是数值,而不是表格数据。我还试着使用double,但又出现了一个错误 错误消息:错误使用分散(第55行)输入参数必须是数字或可以转换为双精度的对象 风转换错误(第18行)散射(时间,wnd_TS) 我不确定将时间作为字符串是否也是一个问题 T = readtable('allunderway.txt', 'HeaderLines', 2
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)
为什么要做这么多额外的工作。您可以简单地使用
scatter(datenum(T.time),T.wnd\u TS)
。这应该可以完成工作并节省所有额外的工作。访问表中包含的数据的更简单方法是使用点表示法,如T.VarN,其中N是您感兴趣的列的编号
在您的代码中,绘图仅使用“时间”,但这仅由小时、分钟和秒组成。我猜想,为了进行图形分析,您需要同时输入日期和时间
可以对日期时间执行算术加法,但要求两个变量具有相同的格式。通过将两个日期转换为“MM/dd/yyyy HH:MM:SS”格式,实际上是在修改变量的数据。但是,如合同中所述:
由于文件第一列(“日期”)中的数据没有时间信息,因此生成的日期时间值的时间默认为午夜。由于文件第二列(“时间”)中的数据没有关联的日期,datetime值的日期默认为当前日期
将变量日期和时间一起添加时,可以将日期的日期('MM/dd/yyyy')添加到时间的时间('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
转换后:
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);
代码的输出是所需的散点图:
%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);
您可以从单独的变量中找到有关合并日期和时间的更多信息