对于CANape采集的数据(MF4/MDF格式),调入Simulink或者AMEsim分析,由于CANape中各信号取样频率不一致,导致文件转化为CSV文件后需要分段提取数据。例如,原始采样频率为3ms和5ms,分析时统一使用0.01s步长,通过数据处理可以提升分析软件的效率。
1 博客内容
2 数据提取
年前内部对软件进行白名单处理,偶然发现AMEsim库目录树中的HOT,编译时会调用Python.exe。而使用Python时无需单独安装,可以直接使用现成的Python环境进行操作。以下分享使用Python提取分段时间数值(设定采样周期)的源程序。
![]()
思路是,当某行第一列的数值大于0.01*m时,输出该行第二列的数值,同时m += 1。
源代码""" 名称: Translation.py 作者: Morven_Xie 版本: 1.0 时间: 2020/3/19 20:08 功能: 定周期提起csv格式文件数据 简介: 每隔10ms提取一次数据 Email: morven_xie@163.com"""# -*- coding:utf-8 -*-import csvfile = open("Data.csv", "w",newline='') #不用newline时出现空行writer = csv.writer(file)writer.writerow(('Time(s)', 'Current(A)')) #单独列时(["Current"])with open('C:\\Users\\Administrator\\Desktop\\Python\\TSheet.csv', 'r', encoding='gbk') as csvfile: reader = csv.reader(csvfile) j = 0 k = 0 for i, rows in enumerate(reader): if i == j: row = rows j = j + 1 if float(row[0]) > abs(0.01 *k): m = 0.01 *k k += 1 print(row[1]) writer.writerow((m, row[1]))file.close()
输出结果展示如下:
![]()
CSV作为Python自带模块,不需要PIP安装即可使用。
相关注意事项
- 确保CSV文件的第一列包含有效的时间戳
- 周期正确设置为目标分析周期
- 处理后的CSV文件需谨慎管理与原文件脱节
相关技术支持:morven_xie@163.com