主体
首先matlab的 readtable 得到的变量类型是 table,这个怎么转换还没有学习跟上= =所以这个还是用的 xlsread 导入的变量。当然如果用下文的办法整理了excel中数据之后,readtable导入,table2array 转换后还是能用的。
其次matlab由于不能直接读取时间(也许有,希望大佬不吝赐教),所以要将excel的时间转换为数值后
下面开整
第一步: 将excel中的时间数据,转换为数值
选中表格—右键—设置单元格格式—数值
这个时候excel表中得到了从‘1900-1-1’到该日期所经过的天数
第二步:在得到的时间数值加上 693960 转换 matlab 体系下的时间值
这是因为matlab的初始时间是从‘0000-1-1’开始的。
days(datetime('1900-1-1')-datetime('0000-1-1'));
% 结果 693961
但在excel中已经将‘1900-1-1’这一天算上了,因此实际只需要加上 693960 即可。
可以在matlab 里检验一下
datetime(738616,'ConvertFrom','datenum');
%ans =
% datetime
% 2022-04-05
第三步:导入数据,并转换为 datetime 格式
将处理好的数据导入matlab,并转换为时间格式
date = xlsread(filename);
date = datetime(date,'ConvertFrom','datenum');
然后就可以直接用 date (datetime 格式)画图了!
但是这时候画出来的图下方日期是 如下图
如果不是很满意,可以用
plot(date,y) % y 是你的数据
xtickformat('yyyy-MM-dd') %指定 x 轴标签格式
如果有其他更方便的方法,求指路!
关于轴标签类型
数字刻度标签
分别是“美元、欧元、英镑、日元、° 和百分号”。最后一个是广泛运用的一种,后面会提到。
其中左右两边都可以加 text,例如
xtickformat('RMB %g')
如果要制定数字其他的形式,常用的是
option flags
符号 | 解释 |
---|---|
, | 增加千分位分隔符 |
+ | 数字前增加符号 ‘+’ |
- | 同理,数字前增加符号 ‘-’ |
0 | 用前端 ’0‘ 代替 ’空格‘ 补充字段 |
# | 即使精度为0,末尾也打印小数点 |
Conversion Characters
example 解释得很清楚。
时间或日期标签
官方给的例子:
-
Example: xtickformat(‘yyyy-MM-dd’) —> 2016-04-19.
-
Example: xtickformat(‘eeee, MMMM d, yyyy HH:mm:ss’) —> Saturday, April 19, 2016 21:41:06.
-
Example: xtickformat(‘MMMM d, yyyy HH:mm:ss Z’) —> April 19, 2016 21:41:06 -0400.