Matlab导入.xlsx时间数据作为横坐标画图

Matlab导入.xlsx时间数据作为横坐标画图

  • 主体
  • 关于轴标签类型
    • 数字刻度标签
    • 时间或日期标签
    • 持续时间形式

主体

首先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') 

在这里插入图片描述

如果要制定数字其他的形式,常用的是
Matlab导入.xlsx时间数据作为横坐标画图_第1张图片
option flags
在这里插入图片描述

符号 解释
, 增加千分位分隔符
+ 数字前增加符号 ‘+’
- 同理,数字前增加符号 ‘-’
0 用前端 ’0‘ 代替 ’空格‘ 补充字段
# 即使精度为0,末尾也打印小数点

Conversion Characters
在这里插入图片描述
example 解释得很清楚。

时间或日期标签

Matlab导入.xlsx时间数据作为横坐标画图_第2张图片
官方给的例子:

  • 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.

持续时间形式

Matlab导入.xlsx时间数据作为横坐标画图_第3张图片

你可能感兴趣的:(matlab,matlab)