1 博客内容
对于CANape采集的数据(MF4/MDF格式),调入Simulink或者AMEsim分析,由于CANape中各信号取样频率不一致,导致文件转化为CSV文件后,要分段提取数据。比如原始采样频率3ms和5ms,分析时统一使用0.01s步长,通过数据处理可以提升分析软件的效率。
2 数据提取
年前内部对软件进行白名单处理,碰巧发现AMEsim库目录树中的HOT,进行编译时调用Python.exe,使用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 csv
file = 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。