matlab作时间相关的图

时间相关的图指横坐标是时间或者日期,作图需要先掌握两点:

1.matlab中与时间、日期相关的函数

2.以时间为坐标轴作图需要注意的事项

matlab中与时间、日期相关的函数

  • 本文作图时会用到的函数:

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); % 将坐标轴设置为日期格式

res

所以,要作为时间为坐标轴的图,大体思路就是会将时间转换为数值型,画图,再将坐标轴的设置为时间格式。

关于excel

想起了exel,在我的excel 2013中作如下图:

1

有看出什么问题吗?对,它的横坐标是等间隔显示的,但是实际数据明明不是等间隔的!不知道是不是有什么特殊的设置方法可以让它正确显示。不过如果横坐标是时间倒是正确的:

2

参考:

MATLAB常用日期和时间函数

Matlab中处理日期与时间的函数详解

matlab画图的简单问题 横坐标怎么换成时间-ilovematlab

posted @ 2017-06-06 15:48  ssh_alitheia  阅读(540)  评论(0编辑  收藏  举报