时间相关的图指横坐标是时间或者日期,作图需要先掌握两点:
1.matlab中与时间、日期相关的函数
2.以时间为坐标轴作图需要注意的事项
datenum:从0000年(公元0年)到给定时间的天数,返回值为double型,详情使用help datenum查看。
一些相关的函数:datestr:日期数字转换为字符串
clock:获取当前日期和时间的数值
now:前时间至0000年的天数
matlab似乎不能直接以时间字符串作为x轴来作图(我不确定,不过我没有找到能行的方法),既然不能直接用字符串,那就要想办法将时间字符串转换为数值型,方法就是使用datenum函数。
例如有如下数据:
% data.txt 2017/6/6 1 2017/6/7 2 2017/6/8 3 2017/6/9 4 2017/6/10 5 2017/6/15 6 2017/6/25 7 2017/7/13 8读取后直接作图:
% 错误代码 matlab2014 alldata = importdata('data.txt'); x = alldata.textdata; y = alldata.data; plot(x, y);会出现如下错误:
错误使用 plot Invalid first data argument故做如下修改:
% 正确代码 clc; clear; alldata = importdata('data.txt'); x = alldata.textdata; xnum = datenum(x); % 将日期转为数值 y = alldata.data; plot(xnum, y); datetick('x', 26); % 将坐标轴设置为日期格式所以,要作为时间为坐标轴的图,大体思路就是会将时间转换为数值型,画图,再将坐标轴的设置为时间格式。
想起了exel,在我的excel 2013中作如下图:
有看出什么问题吗?对,它的横坐标是等间隔显示的,但是实际数据明明不是等间隔的!不知道是不是有什么特殊的设置方法可以让它正确显示。不过如果横坐标是时间倒是正确的:
参考:
MATLAB常用日期和时间函数
Matlab中处理日期与时间的函数详解
matlab画图的简单问题 横坐标怎么换成时间-ilovematlab
