备案个人网站 淘宝客,企业网站规划原则,网站建设的技术保证怎么写,浦江县住房和城乡建设局网站做了一次matlab解析spdlog日志文件并动态绘制行车轨迹的尝试#xff0c;大获成功。
spdlog的存储#xff0c;数据头有固定格式如下#xff1a;
日志类型一个字符空格[日期时间]空格[日志内容tag]空格日志内容
有了固定的格式#xff0c;做解析就好办了。
#xff08;日…做了一次matlab解析spdlog日志文件并动态绘制行车轨迹的尝试大获成功。
spdlog的存储数据头有固定格式如下
日志类型一个字符空格[日期时间]空格[日志内容tag]空格日志内容
有了固定的格式做解析就好办了。
日志内容格式自由我设计的是多个数据间用英文逗号间隔解析的时候一个split就行了
这次解析日志头是用不到的所以像吃虾一样把头掐掉代码如下
function str WashData(str)
i1;
sign2 0;
while (i length(str))if (str(i) ])sign2 sign2 1;endif sign2 2str str(i2 : length(str));return;endi i 1;
end
end 从spdlog的格式分析可知只要找到第二个“]”就算把头找齐了别的不用管所以WashData()里前几行是找到第二个“]”的操作找到之后就可以做字符串截取了注意还有一个空格别漏了所以用了i2截取完直接return返回即可WashData()的IO接口用了MATLAB的引用技巧即I和O参数做同样的命名这样达到c/c里引用传递的效果节省空间与操作数传给WashData()的str是用fgetl()读取的一行日志字符串。
按理应该放上轨迹随时间动态变化的视频但因为公司的电脑打了水印不方便录屏就先不放了脑补一下吧主要就是用hplot()画出xy然后用while或for循环每帧delete(h)再重绘就做成了动态变化的效果代码如下ts_打头的是上面解析出来的数据
figure;
grid on;
hold on;SampleTime 0.02;
for i 1 : 1 : DataCounttitle((i-1)*SampleTime);traj_size 1 : 1 : ts_TrajSize(i,2);ego_x ts_EgoX(i, 2);ego_y ts_EgoY(i, 2);traj_x ts_points_x(i, 2:ts_TrajSize(i,2)1);traj_y ts_points_y(i, 2:ts_TrajSize(i,2)1);plot_traj plot(traj_x, traj_y, r);plot_ego plot(ego_x, ego_y, r-o);pause(SampleTime);delete(plot_traj);delete(plot_ego);
end