import matplotlib.pyplot as plt
import pandas as pd
from scipy.signal import find_peaks
import sys
file_path = "J125188_0508_500Hz.txt"
MIN_HEIGHT = 3.5
MIN_DISTANCE = 10
try:df = pd.read_csv(file_path, header=None, names=["Time", "Voltage"])
except FileNotFoundError:
print("エラー")
times = df["Time"].values
voltages = df["Voltage"].values
peak_indices, _ = find_peaks(
voltages, height=MIN_HEIGHT, distance=MIN_DISTANCE
)
print("【実験2 ピーク検出結果】")
print(f"ファイル名: {file_path}")
print("-" * 35)
print(f"{'波形番号':<6}\t{'時刻[秒]':<10}\t{'電位[V]'}")
print("-" * 35)
for i, idx in enumerate(peak_indices, start=1):
peak_time = times[idx]
peak_voltage = voltages[idx]
print(f"{i:<8}\t{peak_time:<12.2f}\t{peak_voltage:.2f}")
print("-" * 35)
print(f"合計検出数: {len(peak_indices)} 回")
plt.figure(figsize=(10, 5))
plt.plot(times, voltages, label="Measured Signal", color="blue")
plt.plot(
times[peak_indices],
voltages[peak_indices],
"x",
label="Detected Peaks",
color="red",
markersize=10,
)
plt.title(f"Peak Detection Result ({file_path})")
plt.xlabel("Time [seconds]")
plt.ylabel("Voltage [V]")
plt.grid(True)
plt.legend()
plt.ylim(0, 5)
plt.show()
aW1wb3J0IG1hdHBsb3RsaWIucHlwbG90IGFzIHBsdAppbXBvcnQgcGFuZGFzIGFzIHBkCmZyb20gc2NpcHkuc2lnbmFsIGltcG9ydCBmaW5kX3BlYWtzCmltcG9ydCBzeXMKCmZpbGVfcGF0aCA9ICJKMTI1MTg4XzA1MDhfNTAwSHoudHh0IgoKTUlOX0hFSUdIVCA9IDMuNQpNSU5fRElTVEFOQ0UgPSAxMAoKdHJ5OmRmID0gcGQucmVhZF9jc3YoZmlsZV9wYXRoLCBoZWFkZXI9Tm9uZSwgbmFtZXM9WyJUaW1lIiwgIlZvbHRhZ2UiXSkKZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgoJcHJpbnQoIuOCqOODqeODvCIpCiAgICBleGl0KCkKCnRpbWVzID0gZGZbIlRpbWUiXS52YWx1ZXMKdm9sdGFnZXMgPSBkZlsiVm9sdGFnZSJdLnZhbHVlcwoKcGVha19pbmRpY2VzLCBfID0gZmluZF9wZWFrcygKICAgIHZvbHRhZ2VzLCBoZWlnaHQ9TUlOX0hFSUdIVCwgZGlzdGFuY2U9TUlOX0RJU1RBTkNFCikKCnByaW50KCLjgJDlrp/pqJMyIOODlOODvOOCr+aknOWHuue1kOaenOOAkSIpCnByaW50KGYi44OV44Kh44Kk44Or5ZCNOiB7ZmlsZV9wYXRofSIpCnByaW50KCItIiAqIDM1KQpwcmludChmInsn5rOi5b2i55Wq5Y+3Jzo8Nn1cdHsn5pmC5Yi7W+enkl0nOjwxMH1cdHsn6Zu75L2NW1ZdJ30iKQpwcmludCgiLSIgKiAzNSkKCmZvciBpLCBpZHggaW4gZW51bWVyYXRlKHBlYWtfaW5kaWNlcywgc3RhcnQ9MSk6CiAgICBwZWFrX3RpbWUgPSB0aW1lc1tpZHhdCiAgICBwZWFrX3ZvbHRhZ2UgPSB2b2x0YWdlc1tpZHhdCiAgICBwcmludChmIntpOjw4fVx0e3BlYWtfdGltZTo8MTIuMmZ9XHR7cGVha192b2x0YWdlOi4yZn0iKQoKcHJpbnQoIi0iICogMzUpCnByaW50KGYi5ZCI6KiI5qSc5Ye65pWwOiB7bGVuKHBlYWtfaW5kaWNlcyl9IOWbniIpCgpwbHQuZmlndXJlKGZpZ3NpemU9KDEwLCA1KSkKcGx0LnBsb3QodGltZXMsIHZvbHRhZ2VzLCBsYWJlbD0iTWVhc3VyZWQgU2lnbmFsIiwgY29sb3I9ImJsdWUiKQpwbHQucGxvdCgKICAgIHRpbWVzW3BlYWtfaW5kaWNlc10sCiAgICB2b2x0YWdlc1twZWFrX2luZGljZXNdLAogICAgIngiLAogICAgbGFiZWw9IkRldGVjdGVkIFBlYWtzIiwKICAgIGNvbG9yPSJyZWQiLAogICAgbWFya2Vyc2l6ZT0xMCwKKQoKcGx0LnRpdGxlKGYiUGVhayBEZXRlY3Rpb24gUmVzdWx0ICh7ZmlsZV9wYXRofSkiKQpwbHQueGxhYmVsKCJUaW1lIFtzZWNvbmRzXSIpCnBsdC55bGFiZWwoIlZvbHRhZ2UgW1ZdIikKcGx0LmdyaWQoVHJ1ZSkKcGx0LmxlZ2VuZCgpCnBsdC55bGltKDAsIDUpCnBsdC5zaG93KCk=