又是一个新的小项目的整理(本文主要是Matlab 时间处理相关)

Matlab本身时间处理的函数非常多而且功能强大,主要还是有一咪咪奇怪的行为操作需要记录一下

Matlab时间序列画图

MATLAB很神奇又很奇怪的一点是,画图可以,但是如果想直接画图,数据必须是datetime格式的,如果是cell里面包含的话需要读出来到datetime格式,不可以包含,也就是说cell{i}(1)是datetime格式就需要读取到这个位置

再有一个就是,如果想带着时间轴画等高线的话,必须要将其转换成数字,然后再更改坐标轴的选项


cla(app.UIAxes,'reset') ;%清除窗口否则报错
contourf(app.UIAxes,datenum(keda_time),keda_local_height{1},cell2mat(keda_local_vel),'ShowText','on');
xlabel(app.UIAxes,'时间'); % 为X轴加标签
ylabel(app.UIAxes,'高度(m)'); % 为Y轴加标签
 %为了让输出好看,现在求解坐标轴的位置
[~,time_index]=min(abs(rem(datenum(keda_time),1)-0.0833));
time_r = rem(datenum(keda_time),1);
time_num = find(time_r==time_r(time_index));
xticks(app.UIAxes,datenum(keda_time(time_num)));
xticklabels(app.UIAxes,datestr(keda_time(time_num),'mm-dd HH:MM'));

这个是在matlab app里面设计的,所以句柄里面有appa控件,主要是contourf这一句,必须转成数字,然后后面再转回时间字符。还比较麻烦的一点是转成数字了之后每天的时间是看不出来几点的,,得用取余函数,也就是

rem()

进行判断,如果不判断的话,坐标轴就很挤比较难看,取余剩0.0833这个是上午2:00对应的剩余时间

Matlab时间序列读取,生成和格式转换

如果能读取matlab直接生成的数据就直接是datetime格式

s=datenum(time_convert{1});
e=datenum(time_convert{end});
d=30/30/24;%这个原理是啥啊???
T=datestr((s:d:e)','yyyy-mm-dd HH:MM:ss');
GFS_time = datetime(T,'InputFormat','yyyy-MM-dd HH:mm:ss');

大概就是这个样,生成固定时间间隔的时间序列

但是如果一定要读取现有的时间

TF = isstrprop(kedaDataDir(3).name,'digit');
idx = find(TF);
time_0 = '';
for i = 1:8
    time_0(i) = kedaDataDir(3).name(idx(i));
end

time_begin = str2num(time_0);
t_duqu = datetime(time_begin,'ConvertFrom','yyyymmdd');
t_char = char(t_duqu);
% DateStrings = {'2014-05-26T13:30-05:00';'2014-08-26T13:30-04:00';'2014-09-26T13:30Z'}
% time_data_date = strcat (t_char,'T','00:00','-','08:00');
time_data_date = strcat (t_char,'00:00');
t = datetime(time_data_date,'InputFormat','yyyy-MM-ddHH:mm');
% t = datetime(time_data_date,'InputFormat','uuuu-MM-dd''T''HH:mmXXX','TimeZone','UTC')

b = cell2mat(a);
T = b(1:biaoji_jiange);



for i = 1:length(T)
    time_convert{i} = t+ hours(a{i}+str2num(time_label));
end

这段代码主要实现的是:1.从文件名中读取日期,2:将日期进行字符串和datetime格式之间的转换,3:对时间进行加减法运算;4.带有时区的时间运算

Matlab找到和某个数最接近的数

注意审题,最接近的意思指的是绝对值

[~,I]=min(abs(H(-0.0054))

大概这个样子

除此之外还有find这种函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值