NGSIM数据集之用sEMA算法进行平滑与滤波(MATLAB代码实现)

0. NGSIM intro

       NGISM是美国联邦公路局的车辆轨迹数据集中的 i-80 和 US-101 。 2 个数据集包含 6 个 15 min 采集轨迹子集, 其中的车辆状态数据是用10Hz (1 frame=0.1s)频率进行拍摄的多台高空相机对交通路况进行采集,然后再利用图像处理技术得到的, 数据包括车辆 ID、位置、速度、加速度、当前车道 ID,etc.。官方的NGSIM数据下载可评论留下邮箱看到后分享

1. sEMA Data filter

       NGSIM的数据类存在较大的噪声以及异常值,如果非必要精准的重构车辆的轨迹我们可以采用一些常见的滤波算法进行数据集平滑和异常值处理,eg. sEMA(symmetric exponential moving average) & S-G (Savitzky-Golay) & 小波变化 etc., 这里作者采用sEMA算法进行滤波。

2. code and simulation 

sEMA Part-codes

for f=1:1:r1  
 
    % --------------------------------
    % 提取 Vid=f 
    % using Local_x ,column=5
    S_V_Lx_calc=TrajData0415(  TrajData0415(:,1)==Vid_arr0415(f,1),5 );
    
    %  Vid=f 
    [Nr,Nc]=size(S_V_Lx_calc); 
   
    % 数据点个数
    %-----------------------------------------------------------------------     
    % 求解 数据集中的横向速度:Vx_0415
 
    for e=1:1:Nr   % Vx_0415 Acc_x0415 calc.
        
        if e==1
            
            Vx_0415_calc(f,e)= (S_V_Lx_calc(e+1,1)-S_V_Lx_calc(e,1))/dto;  % for Vx_0415
           
        elseif 2<=e && e<=Nr-1
            
            Vx_0415_calc(f,e)= (S_V_Lx_calc(e+1)-S_V_Lx_calc(e-1))/(2*dto);
            
            Acc_x0415_calc(f,e)=(S_V_Lx_calc(e+1)-2*S_V_Lx_calc(e,1)+S_V_Lx_calc(e-1))/dt2;
            
        elseif e==Nr
            
            Vx_0415_calc(f,e)= Vx_0415_calc(f,e-1); 
        end
    end
    % 单独计算 
     Acc_x0415_calc(f,1)=(Vx_0415_calc(f,2)-Vx_0415_calc(f,1))/dt;
     Acc_x0415_calc(f,Nr)=Acc_x0415_calc(f,Nr-1);
end
 
% for vy_0415_calc
Vx_0415_calcinv=Vx_0415_calc';        % 转置
Vx_0415_calc_=Vx_0415_calcinv(:);   
Vx_0415_calc_(Vx_0415_calc_==inf)=[]; % 去除预设的inf量 preallcation
 
% for Acc_x0415_calc
Acc_x0415inv_calc=Acc_x0415_calc';        
Acc_x0415_calc_=Acc_x0415inv_calc(:);    
Acc_x0415_calc_(Acc_x0415_calc_==inf)=[]; 
 
for w=1:1:r
    
    TrajData0415_calc(w,19)=Vx_0415_calc_(w,1)*0.3048;   % ft-->meter
    TrajData0415_calc(w,20)=Acc_x0415_calc_(w,1)*0.3048;
    
    for ww=[5,6,12,13]
        TrajData0415_calc(w,ww)=TrajData0415(w,ww)*0.3048;
    end
    
    for ww=[1,2,3,4,7,8,9,10,11,14,15,16,17,18]  % column index
        TrajData0415_calc(w,ww)=TrajData0415(w,ww);
    end
    
end

sEMA 滤波效果:

        分析可知滤波后的数据在保留数据集原有信息的同时可以很好处理NGSIM中的尖点与噪声。MMiL欢迎大家交流与讨论,一起进步 !

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Liooo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值