在Excel或Origin中,直接使用日期或时间作横坐标时,坐标为等间距,即不能反映不同的时间间隔。实际上Excel可以将时间转化为小数,尽管用转换后的小数作图,可以很好地反应时间间隔,但是依然没有时刻直观。 
考虑使用Matlab分两步实现:1)将时间转换为小数作图;2)将小数重新映射为时刻充当横坐标。主要需用到datenum和datetick两个函数。 
 x = datenum(Y, M, D, H, MN, S) 
datenum可以提取时间数据,也即上文提到的第一步。括号中的参数依次为year, month, day, hour, minute, second。本例中时间仅含小时和分钟,故将其他参数设为0。 
 datetick(tickaxis,dateform) 
datetick将坐标采用时间标刻,也即第二步。tickaxis默认为'x’,dateform为时刻格式,可为字符串或对应的数字。详见MATLAB帮助文档(或见图Dateform)。本例选用时分格式,即'HH:MM'或对应的数字15。 代码如下: 
%以时间为横坐标作图 
Temp=load('D:\'); 
Time=importdata('D:\'); %文本格式为时分,如13:00 Hour=Time(:,1); Minute=Time(:,2); 
interval=datenum(0,0,0,Hour,Minute,0); 
plot(interval,Temp,'--bd', 'LineWidth',2,'MarkerFaceColor','r'); axis([0 1 0 160]); %设置坐标区间 title('temp. VS time'); xlabel('time'); ylabel('temp /℃'); x=interval; 
datetick('x','HH:MM'); %需用x作为数组变量 图例为某浇注过程的温度控制曲线。 
 
y = rand(1,3)
plot(1:3,y)
str ={ '2009-5-7'    '2009-5-9'    '2009-5-11' };
set(gca,'XTick',1:3)
set(gca,'XTickLabel',str)
t = linspace(datenum('6-26'),datenum('7-25'),6);
plot(t,rand(size(t)));
datetick('x','mmm.dd','keepticks')
Standard MATLAB Date Format Definitions
dateform (number)
dateform (string)
Example
0
'dd-mmm-yyyy HH:MM:SS'
01-Mar-2000 15:45:17
1
'dd-mmm-yyyy'
01-Mar-2000
2
'mm/dd/yy'
03/01/00
3
'mmm'
Mar
4
'm'
M
5
'mm'
03
6
'mm/dd'
03/01
7
'dd'
01
8
'ddd'
Wed
matlab等高线间隔
9
'd'
W
10
'yyyy'
2000
11
'yy'
00
12
'mmmyy'
Mar00
13
'HH:MM:SS'
15:45:17
14
'HH:MM:SS PM'
3:45:17 PM
15
'HH:MM'
15:45
16
'HH:MM PM'
3:45 PM
17
'QQ-YY'
Q1-01
18
'QQ'
Q1
19
'dd/mm'
01/03
20
'dd/mm/yy'
01/03/00
21
'mmm.dd,yyyy HH:MM:SS'
Mar.01,2000 15:45:17
22
'mmm.dd,yyyy'
Mar.01,2000
23
'mm/dd/yyyy'
03/01/2000
24
'dd/mm/yyyy'
01/03/2000
25
'yy/mm/dd'
00/03/01
26
'yyyy/mm/dd'
2000/03/01
27
'QQ-YYYY'
Q1-2001
28
'mmmyyyy'
Mar2000
29 (ISO 8601)
'yyyy-mm-dd'
2000-03-01
30 (ISO 8601)
'yyyymmddTHHMMSS'
20000301T154517
31
'yyyy-mm-dd HH:MM:SS'
2000-03-01 15:45:17

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。