当我使用 asammdf (Python 3.7) 从 mdf (.mf4) 文件中读取时,一旦样本计数越过障碍,时间戳就会再次从接近 0 开始计数,就像溢出一样:对于 29045 行的 3 个文件,由于某种原因,一个文件位于 27234 行。这意味着当我使用类似的方法resample
或to_dataframe
在这些方法期间发生的插值时,我会得到错误的数据。
我在文档中没有找到任何类似的东西,除了文档之外几乎没有任何资源。我认为这可能与块大小或内存分配有关,但我不知道该怎么做或为什么会发生这种情况。
现在我通过标准方法阅读它
mdf = MDF(file)
我编写了一个小脚本来读取文件并绘制转换(插值)数据和原始数据点之间的差异,以展示我的意思:
import tkinter as tk
from tkinter import filedialog as fd
from asammdf import MDF
from matplotlib import pyplot as plt
typeStr = '*.mf4'
root = tk.Tk()
root.wm_attributes('-topmost', 1)
root.withdraw()
files = fd.askopenfilenames(parent=root,filetypes=[("Measurement MF4 file",typeStr)])
for file in files:
mdf = MDF(file)
# conversion to pandas
data = mdf.to_dataframe()
data['Time [s]'] = list(data.index)
columns = data.columns.tolist()
columns.remove('Time [s]')
columns.insert(0,'Time [s]')
data = data[columns]
plt.plot(data['Time [s]'], data[columns[1]],label="converted")
# original data
chData = mdf.get(columns[1])
plt.plot(chData.timestamps, chData.samples, label="original")
plt.legend()
plt.show()
可以在此处访问示例文件:
一个情节的例子: