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

2024-09-28 03:18:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我是否可以从文件中加载特定通道以加快输入过程

我现在要做的是加载整个文件,并在转换到pandasDataframe的过程中指定通道

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)

Tags: columns文件topathfromimport程序if
2条回答

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

瓶颈可能是您没有提供光栅参数(请参阅此处的文档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")

相关问题 更多 >

    热门问题