概述
本文摘要:
主要介绍matlab中读取测量数据的一些关键函数。测量数据的格式可以是blf格式或者mdf格式(mf4,INCA的dat等)。这篇文章主要以介绍matlab的帮助文档为主,比较基础。
记得刚开始工作的时候,处理INCA记录的数据,以及vector的CAN卡或者数据记录仪记录的数据,还是一件比较麻烦的事情,那时基本上只能在特定的软件里回看,或者把数据转换成mat文件,才能在matlab里进行一些处理。
想必这几年Mathworks的开发人员也发现了广大car engineer的辛苦,于是从2016b的版本开始支持直接读取mdf格式的数据文件。从2019a的版本开始支持直接读取blf格式的文件。这样一来就极大的方便了对测量数据进行处理。
mdf格式文件的读取
mdf格式的常见文件是INCA记录的.dat文件,虽然是以dat结尾,但实际也是mdf格式的。还有一个mf4文件,其实也是mdf格式的文件。
matlab中读取mdf格式文件的命令主要有以下几个:
mdf(创建一个mdf文件的对象)
mdfinfo(获取mdf文件的一些详细信息)
channelList(列出该数据文件中所有的信号)
read(读取该数据文件中某个信号的数据)
下面介绍一下如何读取mdf文件里的信号数据。
比如matlab安装目录下就有一个mf4数据文件,首先通过mdf命令创建一个这个数据的对象:
然后你需要知道你想要读取的数据的信号名,可以通过channelList列出所有的信号,其中比较重要的就是信号名和信号所在组的序号,通过这两个信息就可以直接读出信号的数据。
接下来,如果想要读取信号Counter_B4的数据,那就只要输入:
data = read(m,chanList(3,:))
读取的数据如下:
如果你可以直接知道信号名和通道序号,也可以直接读取信号数据:
最后对于mfd的数据文件还在2019a中添加了一个非常好用的函数:
mdfVisualize(mdfFileName)
通过这个函数, 可以直接把mdf文件中所有的数据读出来,展现到 Simulation Data Inspector 中。以后就再也不需要用ETAS的MDA来看数据文件了~
blf格式文件的读取
matlab能支持blf文件的直接读取,可以说是最让我开心的一个更新了。相比于mdf文件,其实blf文件只记录了can报文的原始数据,主要是报文的id,原始的未区分信号的数据等,所以要读取blf格式的文件中的信号数据,还需要对应的dbc文件,这样才能解析出想要的数据信号。
matlab中读取blf格式文件的命令主要有以下几个:
blfinfo(获取blf文件的信息)
blfread(读取blf文件的数据)
canDatabase(创建一个DBC文件的对象,用来解析blf文件数据)
canSignalTimetable(将读出的blf文件数据转成timetable的格式)
读取一个blf文件中数据的步骤如下:
首先创建一个DBC文件的对象,用来解析报文的数据结构
获取blf文件的信息,主要看看有几路can通道,确定自己要读取的数据在哪个通道上
读取指定can通道中的报文数据
这边读取数据是以报文为单位的。这里详细说明一下读取信号需要注意的地方。
最合适的读取命令是:
blfData = blfread("Logging_BLF.blf", 2, "Database", canDB);
其中2是通道序号,Database中是之前定义好的DBC数据对象。读出来的结果如下:
可以看出,正确的解析出了不同 can id对应的报文名称,以及报文中的信号。
再看一下,如果我们通道需要选错了,那么结果是怎么样的:
由于通道1对应的DBC文件是不匹配的,所以无法解析出can id对应的报文名和信号名
将数据转为timetable的格式
可以通过canSignalTimetable命令来获取指定报文的timetable格式的数据:
这里会给出该帧报文中所有的信号的timetable数据,如果只想选择其中特定信号的话,也可以选择特定列的信号
后记
想要用这个功能必须保证matlab的版本在2019a之后。再配合自己写一些脚本,之后再处理测试数据就方便多了。
简单的demo地址:
https://gitee.com/dingxu_nj/allmandring
最后
以上就是顺心铅笔为你收集整理的matlab无法解析名称_如何利用Matlab处理车辆测量数据的全部内容,希望文章能够帮你解决matlab无法解析名称_如何利用Matlab处理车辆测量数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复