تنشأ مهمة تحديد القمم في تطبيقات مختلفة، بدءًا من العثور على القمم في فورييه التحويلات (FFTs) لاستخراج القمم من صفائف ثنائية الأبعاد. يتمثل التحدي الشائع في التمييز بين القمم الحقيقية والتقلبات الناجمة عن الضوضاء.
بدلاً من تنفيذ خوارزمية اكتشاف الذروة من الصفر، فكر في استخدام scipy وظيفة .signal.find_peaks. توفر هذه الوظيفة خيارات لتصفية وتحديد القمم بناءً على معايير محددة.
لتسخير قوة find_peaks بشكل فعال، من الضروري فهم معلماتها:
من بين جميع المعلمات، البروز يبرز باعتباره الأكثر فعالية في التمييز بين القمم الحقيقية والضوضاء. يتضمن تعريفه الحد الأدنى من الهبوط العمودي المطلوب للوصول إلى قمة أعلى.
لتوضيح فائدتها، فكر في الجيوب الأنفية متغيرة التردد الملوثة بالضوضاء. الحل المثالي هو تحديد القمم بدقة دون الخضوع لذروات الضوضاء الزائفة.
يوضح الكود التالي كيفية استخدام وظيفة find_peaks مع مجموعات المعلمات المختلفة:
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import find_peaks
# Generate signal
x = np.sin(2*np.pi*(2**np.linspace(2,10,1000))*np.arange(1000)/48000) np.random.normal(0, 1, 1000) * 0.15
# Find peaks using different parameters
peaks, _ = find_peaks(x, distance=20)
peaks2, _ = find_peaks(x, prominence=1)
peaks3, _ = find_peaks(x, width=20)
peaks4, _ = find_peaks(x, threshold=0.4)
# Plot results
plt.subplot(2, 2, 1)
plt.plot(peaks, x[peaks], "xr"); plt.plot(x); plt.legend(['distance'])
plt.subplot(2, 2, 2)
plt.plot(peaks2, x[peaks2], "ob"); plt.plot(x); plt.legend(['prominence'])
plt.subplot(2, 2, 3)
plt.plot(peaks3, x[peaks3], "vg"); plt.plot(x); plt.legend(['width'])
plt.subplot(2, 2, 4)
plt.plot(peaks4, x[peaks4], "xk"); plt.plot(x); plt.legend(['threshold'])
plt.show()
كما لوحظ من النتائج، فإن استخدام البروز (الخط الأزرق في الحبكة الفرعية الثانية) يعزل القمم الحقيقية بشكل فعال، بينما توفر المسافة والعرض والعتبة أداءً دون المستوى في وجود الضوضاء.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3