測定データフォーマットの1つであるMDFファイルをPythonで読み込む.
チャンネル名の取得およびそのデータプロット用サンプルプログラム
このプログラムのポイントは,ファイル内のチャンネルをターミナルウィンドウに一覧表示してくれるので,グループとチャンネルを指定して,何度でも任意のチャンネルデータをプロット表示させることができる.
read_mdf_file.py
from asammdf import MDF
import numpy as np
import matplotlib.pyplot as plt
# MDFファイルを読み込む
mdf_file = 'test_data.mdf'
mdf = MDF(mdf_file)
# 利用可能なチャンネルの一覧を表示
try:
print("利用可能なチャンネル:")
# グループごとのチャンネル情報を取得
for group_index, group in enumerate(mdf.groups):
for channel_index, channel in enumerate(group.channels):
if channel.name: # チャンネル名が存在する場合のみ表示
print(f"- Group {group_index}, Index {channel_index}: {channel.name}")
# 特定のグループとインデックスを指定してチャンネルを取得
# 例: 最初のグループ(3)の2番目のチャンネル(0)を取得
signal = mdf.get(group=3, index=0)
except IndexError as e:
print(f"エラー: {e}")
exit(1)
# データをプロット
plt.figure(figsize=(10, 6))
plt.plot(signal.timestamps, signal.samples)
plt.title(signal.name)
plt.xlabel('Time [s]')
plt.ylabel(f'{signal.name} [{signal.unit}]')
plt.grid(True)
plt.show()
# データを配列として取得
timestamps = signal.timestamps # 時間データ
values = signal.samples # 測定値データ