在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)
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')
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小时内删除。
发表评论