从 mdf (.mf4) 文件加载特定频道

load specific channels from mdf (.mf4) file

我正在加载很多大文件 .mf4 files using the package asammdf。 这些文件有很多我不感兴趣的通道,输入是我程序的瓶颈。 所以我的问题是:

我能否以某种方式仅从文件中加载特定频道以加快输入过程?

我现在正在做的是加载整个文件并在转换为 pandas Dataframe.

期间指定通道
from asammdf import MDF

if __name__ == '__main__':
    path = 'C:/path/to/some/file.mf4'
    mdfObj = MDF(path, version='4.10')
    columns=['A','B','C']
    df = mdfObj.to_dataframe(channels=columns)

您已经在使用正确的方法。打开文件时,仅加载元数据,并且仅在需要时读取实际通道样本(当您调用 to_dataframe)时)。

瓶颈可能是您没有提供 raster 参数(请参阅此处的文档 https://asammdf.readthedocs.io/en/latest/api.html#asammdf.mdf.MDF.to_dataframe),在这种情况下,将构建输出数据帧使用所选通道的所有时间戳的并集并对所有列进行插值。玩转光栅参数

from asammdf import MDF

if __name__ == '__main__':
    path = 'C:/path/to/some/file.mf4'
    mdfObj = MDF(path, version='4.10')
    columns=['A','B','C']
    # 0.1s
    df = mdfObj.to_dataframe(channels=columns, raster=0.1)
    # or use the time stamps of channel 'A'
    df = mdfObj.to_dataframe(channels=columns, raster='A')  

编辑: @Jonas 从 6.1.0 版开始,可以使用 channels 参数 https://asammdf.readthedocs.io/en/development/tips.html#selective-channel-loading

进行选择性文件加载
from asammdf import MDF

if __name__ == '__main__':
    path = 'C:/path/to/some/file.mf4'
    
    columns=['A','B','C']
    
    mdfObj = MDF(path, channels=columns)

你可以使用这个:

from asammdf import MDF ,Signal 

mdf=MDF(version='4,10')

Signal= mdf.get("name of the signal")