我使用像 asammdf 或 mdfreader 这样的 MDF 文件。但是我的数据文件太大了。所以,我想读取特定数据并制作一个数据框。
mdf 数据读取器使用 asammdf from asammdf import MDF
case in mdfreader,有很多错误,因为我的 mdf 文件是同名数据,重采样时有些麻烦(错误数据出来)
filename = test_t16.dat" ; 我的 MDF 数据文件
yop = MDF(文件名); 使用 asammdf 的 mdf 阅读器
whl_rr = yop.get('WHL_SPD_RR') ;我从 mdf 文件中选取一些数据(yop)
whl_rr =
invalidation_bits = {NoneType} 无
master_metadata = {tuple} ('TimeChannel', 1)
name = {str} 'WHL_SPD_RR'
原始 = {bool} 假
样本 = {ndarray} [0. ... 0.]
来源 = {NoneType} 无
stream_sync = {bool} 假
时间戳 = {ndarray} [ 240.4053 ... 2050.81525]
unit = {str} 'km/h' > 我想要这样的数据框
from asammdf import MDF
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
filename = r"C:\Users\wonyo\PycharmProjects\test\test_t16.dat"
yop = MDF(filename)
signallist = [ "WHL_SPD_RR","WHL_SPD_FR", "WHL_SPD_RL","WHL_SPD_FL"]
df=[]
def group_len(yop, start, stop):
for i in range(start, stop):
if yop.get_group(i).empty != True:
if i == start:
max_len = len(yop.get_group(i).TimeChannel)
min_time = min(yop.get_group(i).TimeChannel)
else:
max_len = min(max_len, len(yop.get_group(i).TimeChannel))
min_time = max(min_time, min(yop.get_group(i).TimeChannel))
return max_len-1000, max(242, min_time + 2)
grlen_time = group_len(yop, 68, 140)
max_len = grlen_time[0]
min_time = grlen_time[1]
time = np.linspace(0, (max_len - 1) * 0.01, max_len)
for i in range(0,5):
signal = yop.get(signallist[i])
signal.timestamps = signal.timestamps - min_time
signal = signal.interp(time)
data_sg = signal.samples
name_sg = signal.name
inex_sg = signal.timestamps
mydata = pd.DataFrame( data =data_sg , index=index_sg, columns=name_sg)
print(df)
whl_spd_fl = signal()
DIEA
一只甜甜圈
相关分类