arrays - 误差散点图时间与风速(来自表格的数据)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)
解决方案
访问表中包含的数据的一种更简单的方法是使用点表示法,如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);
代码的输出是所需的散点图:
您可以在此处找到有关从不同变量组合日期和时间的更多信息。
推荐阅读
- android - 部署到 google play 新应用自动化
- mysql - 使用 Node.js 从 MySQL 中提取数据并显示在 HTML 页面上
- r - 如何将 x 轴标签从一个字符更改为另一个字符?
- c# - C# Selenium 找不到按钮
- jquery - Jquery - “hasClass()”不起作用
- javascript - 显示 React 动态文本 + 一个组件
- python - 张量流,tf.train.batch,没有结果
- database - 分析 Mautic 数据库架构
- java - jdbc+javafx MySQLSyntaxErrorException
- c# - 为什么函数不改变给定的节点(列表)?