实战4 - 汽车行驶工况构建

1 题目简介

题目来源于2019年中国研究生数学建模竞赛D题——汽车行驶工况构建。

2 涉及内容

在本次实战的数据分析过程中,涉及以下技术内容:
(1)数据预处理技术
(2)for循环的使用
(3)暴力搜索方法

3 实战步骤

3.1 读取数据

我将三个数据表合成了一个,

dir_data='2019年中国研究生数学建模竞赛D题\原始数据\汇总.xlsx';
warning('off');
data_raw=readtable(dir_data);

%取出时间和速度
time=data_raw{:,1};
time_num=datenum(time);%将时间类型转换为double类型
chesu=data_raw{:,2};

3.2 速度线性插值

如果两点间隔小于5秒,对两点之间的速度进行线性插值,按1秒的间隔补足速度点,

time_second=time_num(2)-time_num(1);%一秒的大小
x_cha=[];%存放要插值的时间点

for i=2:length(time_num)
    time_jiange=time_num(i)-time_num(i-1);
    if (time_jiange>time_second) && (time_jiange<=5*time_second)     
        tem1=time_num(i-1):time_second:time_num(i);
        x_cha=[x_cha,tem1];
    end
end
chesu_cha=interp1(time_num,chesu,x_cha,"linear");%线性插值

%按时间升序重新排序,实现把新插值点和原数据点合在一起
chesu_zeng=[chesu;chesu_cha'];
time_num_zeng=[time_num;x_cha'];

[time_num_zeng,I] = sort(time_num_zeng);
chesu_zeng=chesu_zeng(I);

3.3 标记断点位置

两点时间间隔超过5秒的,视为断点,对其位置进行标记,

duan=zeros(length(time_num_zeng),1);%标记断点位置,1表示是断点
for i=2:length(time_num_zeng)
    time_jiange=time_num_zeng(i)-time_num_zeng(i-1);
    if time_jiange>5*time_second
        duan(i)=1; 
    end 
end

3.4 丢弃小于20秒的片段

两个断点之间的片段如果小于20秒,则丢弃,

duan_ind=find(duan==1);
del_ind=[];%存放要删除的点的索引位置
if (time_num_zeng(duan_ind(1)-1)- time_num_zeng(1))<20*time_second %判断第一个断点之前的部分是否少于20秒
    tem1=1:(duan_ind(1)-1);
    del_ind=[del_ind,tem1];
end

for i=2:length(duan_ind) %判断第二个断点到最后一个断点之间的部分是否少于20秒
    if (time_num_zeng(duan_ind(i)-1)- time_num_zeng(duan_ind(i-1)))<20*time_second
        tem1=duan_ind(i-1):(duan_ind(i)-1);
        del_ind=[del_ind,tem1];
    end 
end

if (time_num_zeng(end)- time_num_zeng(duan_ind(end)))<20*time_second %判断最后一个断点之后的部分是否少于20秒
    tem1=duan_ind(end):length(time_num_zeng);
    del_ind=[del_ind,tem1];
end

time_num_zeng(del_ind)=[];
chesu_zeng(del_ind)=[];%执行删除操作

3.5 重新锁定断点位置

执行上述删除操作后,断点位置发生变化,需重新锁定断点位置,

du
  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值