我是靠谱客的博主 顺心铅笔,最近开发中收集的这篇文章主要介绍matlab无法解析名称_如何利用Matlab处理车辆测量数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文摘要:

主要介绍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命令创建一个这个数据的对象:

480d268075e3d18f31961b39685e52d9.png

然后你需要知道你想要读取的数据的信号名,可以通过channelList列出所有的信号,其中比较重要的就是信号名和信号所在组的序号,通过这两个信息就可以直接读出信号的数据。

4f3d97b415811fb5b4aa0f964c7fa494.png

接下来,如果想要读取信号Counter_B4的数据,那就只要输入:

data = read(m,chanList(3,:))

读取的数据如下:

1a1511463a23d2f9f6f4b45bd8f8a13b.png

如果你可以直接知道信号名和通道序号,也可以直接读取信号数据:

cfc7c7445aaa9677c3824bcdb95a4a48.png

最后对于mfd的数据文件还在2019a中添加了一个非常好用的函数:

mdfVisualize(mdfFileName)

通过这个函数, 可以直接把mdf文件中所有的数据读出来,展现到 Simulation Data Inspector 中。以后就再也不需要用ETAS的MDA来看数据文件了~

5a62967eeb21598847d90b03db3ee145.png

blf格式文件的读取

matlab能支持blf文件的直接读取,可以说是最让我开心的一个更新了。相比于mdf文件,其实blf文件只记录了can报文的原始数据,主要是报文的id,原始的未区分信号的数据等,所以要读取blf格式的文件中的信号数据,还需要对应的dbc文件,这样才能解析出想要的数据信号。

matlab中读取blf格式文件的命令主要有以下几个:

  • blfinfo(获取blf文件的信息)

  • blfread(读取blf文件的数据)

  • canDatabase(创建一个DBC文件的对象,用来解析blf文件数据)

  • canSignalTimetable(将读出的blf文件数据转成timetable的格式)

读取一个blf文件中数据的步骤如下:

  1.  首先创建一个DBC文件的对象,用来解析报文的数据结构

    1f263fe9ce9e74345322a757fc11e0f5.png

  2. 获取blf文件的信息,主要看看有几路can通道,确定自己要读取的数据在哪个通道上

    7a95fe5bfa3be8f04632fddda586f10b.png

  3. 读取指定can通道中的报文数据

    这边读取数据是以报文为单位的。这里详细说明一下读取信号需要注意的地方。

    最合适的读取命令是:

    blfData = blfread("Logging_BLF.blf", 2, "Database", canDB);

    其中2是通道序号,Database中是之前定义好的DBC数据对象。读出来的结果如下:

    ae2ea90298e8e7e5d9238f347df875cf.png

    可以看出,正确的解析出了不同 can id对应的报文名称,以及报文中的信号。

    再看一下,如果我们通道需要选错了,那么结果是怎么样的:

    1f46672ab56800d188d17acac8f1e2f6.png

    由于通道1对应的DBC文件是不匹配的,所以无法解析出can id对应的报文名和信号名

  4. 将数据转为timetable的格式

    可以通过canSignalTimetable命令来获取指定报文的timetable格式的数据:

    440a95f9b9ab7695af5fad9562e5dbf8.png

    这里会给出该帧报文中所有的信号的timetable数据,如果只想选择其中特定信号的话,也可以选择特定列的信号

    a134109ab688bf5c4456465d32f51c13.png

后记

想要用这个功能必须保证matlab的版本在2019a之后。再配合自己写一些脚本,之后再处理测试数据就方便多了。

简单的demo地址:

https://gitee.com/dingxu_nj/allmandring

最后

以上就是顺心铅笔为你收集整理的matlab无法解析名称_如何利用Matlab处理车辆测量数据的全部内容,希望文章能够帮你解决matlab无法解析名称_如何利用Matlab处理车辆测量数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(683)

评论列表共有 0 条评论

立即
投稿
返回
顶部