又是意料之外的加更,关于小项目中的数据处理,主要是用到了matlab处理时间的一些函数

小函数输入是年月日和秒

本身读取的数据是从格林威治时间某天0点开始

也就是输入的时间怎么转化成读取的数据库时间的时间序列的问题

遇到的两个问题一个是怎么在文件名称中读取开始时间

一个是怎么计算时间间隔,因为要考虑年月日的混合运算

关于第一个问题就是将读取的文件名称作为字符串,里面涉及一个正则判定是不是数字或者字母的函数

filename = sprintf('GFS_WindData_20210303_GMT00_f357.mat');
filename_char = char(filename);
TF = isstrprop(filename,'digit');%就是这个函数
idx = find(TF);
for i = 1:8
    time_data(i) = filename_char(idx(i));
end

实现细节有两个,一个是文件名称无中文,一个是char可以直接按照矩阵的方式进行逐个读取

关于第二个问题就是时间间隔的计算

Matlab对于时间的运算有很多自己的函数,也有自己的格式

在这个项目里面是输入年月日和秒

就需要先把输入的整型数据转换成时间格式数据

year = 2021;
month = 03;%上限是12
date = 08;%上限是31
t = 12300;%上限是86400

T_shuru = date+month*100+year*10000;
t_shuru = datetime(T_shuru,'ConvertFrom','yyyymmdd');

然后是把文件名称中读取的时间数据转换成时间格式数据

T_duqu = str2num(time_data);
t_duqu = datetime(T_duqu,'ConvertFrom','yyyymmdd');

然后是利用其自带的函数进行时间间隔的运算和最后结果的提取

t_jiange = t_shuru-t_duqu;
%提取小时间隔为数字
t_jiange_char=char(t_jiange);
TF_temp = isstrprop(t_jiange_char,'digit');
for i = 1:length(TF_temp)
    if TF_temp(i)~=0
        time_temp(i) = t_jiange_char(i);%time_temp这个表示的是间隔的小时,表示方式是字符串
    else
        break;
    end
end
t_chazhi = t + str2num(time_temp)*60*60;

over

qwq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值