Asammdf:通道、信号与样本的概念及关联疑问
MDF文件与Asammdf核心概念及对象结构说明
一、基础概念区分
1. 样本(Sample)
样本是单条采集到的原始数据记录,比如某一时刻的电压值、转速值,相当于表格里的一行数据,每个样本对应同一时间戳下的一组测量值。
2. 信号(Signal)
信号是具有相同物理意义的一组样本的集合,比如全程采集的「发动机转速」数据就是一个信号——它包含采集周期内所有时刻的转速样本,还附带单位、数据类型、采样率这类元信息。
3. 通道(Channel)
通道是MDF文件里的物理存储载体,本质是承载信号数据的容器。多数情况下一个通道对应一个信号,但也存在特殊场景:比如复杂信号会拆分到多个通道存储,或是一个通道打包了多个信号的原始字节(这类情况少见)。
简言之:信号是业务层面的「数据集合」,你分析数据时关注的是信号;通道是文件层面的「存储单元」,Asammdf读写文件时靠它操作底层存储。
二、Asammdf中MDF对象的结构
- MDF内部以可迭代序列管理通道和信号:
mdf.channels可获取所有通道对象的集合,支持索引、遍历mdf.signals可直接获取所有信号对象的集合,同样支持索引、遍历
- 样本不会作为独立对象被MDF直接存储为列表,而是附着在对应信号/通道上:通过
signal.samples就能获取某个信号对应的所有样本数组(numpy数组格式)
三、MDF对象创建时的隐式生成
当你用Asammdf加载MDF文件(比如from asammdf import MDF; mdf = MDF('test.mf4'))时,程序会自动解析文件结构,隐式生成所有通道、信号对象,同时将样本数据加载到内存(或按配置延迟加载,但对象本身会生成)。你无需手动创建这些对象,直接通过mdf.channels、mdf.signals即可访问。
内容的提问来源于stack exchange,提问作者kerat
相关产品推荐
相关产品推荐

