前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NVH原始数据文件如何读取 Part2

NVH原始数据文件如何读取 Part2

作者头像
用户7573907
发布2020-07-21 11:29:34
8890
发布2020-07-21 11:29:34
举报

“前一篇文章介绍了NVH数采系统记录的原始文件常见的几种数据格式。本篇将介绍怎样找到具体的数据位置并还原它,从而实现编程直接读取原始文件的目的。”

01

画出整体数据

前一篇文章提到:数采系统记录的原始数据包含两部分:ASCII码明文和某类型的二进制数据。如图1。

图1

本文中,我们以24位数据格式来举例。要画出整体数据,可以对图1的原始文件进行如下3次尝试,如图2:

1)从文件开头,读取24位整型数据;

2)跳开8位,读取24位整型数据;

3)跳开16位,读取24位整型数据。

跳开24位,再读取24位数据的话,会和情况1)类似。

图2

第 1)次:没发现信号,如图3;

第 2)次:没发现信号,如图4;

第 3)次:发现测试信号,如图5。

图3

图4

图5

需要注意的是:图5中最前面的大数,是说明文字,而非数据。

同样的,如果数据格式是32位,则进行4次尝试,即可画出整体数据。

02

原始文件的数据排序

由于NVH数采系统的采样频率较高,每个通道记录的数据一般不会连续存储。常采用数据块(数据长度固定)的形式,按通道依次存储。

以3个通道记录的数据为例:要得到各通道数据,需要对整体数据进行重新排序,如图6。

图6

而解析原始数据格式,则是个逆向工程。需要先准备好各通道的数据(用NVH自身软件导出),然后从整体数据中找到其相应位置,如图7。

图7

虽说,图7过程和图8有些类似。但是,依然可以用一些数学方法让整个过程变得容易和充满乐趣。

图8

03

查找数据位置

我们拿NVH自身软件导出的某通道一小段数据(暂称为:目标数据)为例。目的是:找到这段目标数据在原始整体数据中的位置,如图9。

其实,刚开始,我是用肉眼对的~

但是,由于图9上图和下图数据完全不是一个数量级(上图是24位整形数据,需要乘以修正系数后,才能得到下图),所以给肉眼寻找增加了很多难度。

图9

后来,我用了一种更简单高效的方法:互相关。如图10。

图10

因为目标数据是整体数据中某段乘以修正系数的结果,所以它们严格线性相关。通过互相关计算,找到互相关最大值的位置,也就是目标信号的位置,如图11。

将目标信号放在互相关最大的位置,进一步验证:目标信号乘以一个系数后,和整体信号的一段完全吻合,如图11下图。说明我们找到了正确的位置。

图11

以上,即寻找某个通道数据在原始整体数据位置的方法。确认完所有通道数据在整体数据的各个位置后,该原始文件的解析工作也就基本完成。

04

总结

总结一下针对NVH原始数据文件的解析过程:

1)用NVH自身软件导出各通道数据备用。

2)读取NVH原始数据文件的ASCII明文内容,内含采样频率、通道数、各通道修正系数等。

3)已知数据格式(24位或32位等),进行多次数据读取尝试,找到合适的数据读取起始位置。

4)用之前备用的各通道数据作为目标数据,多次查找目标数据在原始文件整体数据中的位置。

5)知道原始文件整体数据的排列规律后,结合各通道修正系数,还原各通道数据。

以上是解析NVH原始数据文件的大致过程,具体过程及细节不再详述。在逆向解析的过程中难免会遇到各种问题,当然,乐趣,也尽在其中

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信号分析应用及算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档