पायथन/SciPy के लिए पीक-फाइंडिंग एल्गोरिदम
समस्या विवरण
चोटों की पहचान करने का कार्य विभिन्न अनुप्रयोगों में उठता है, जिसमें फूरियर में शिखर खोजने से लेकर (एफएफटी) को 2डी सरणियों से शिखर निकालने में परिवर्तित करता है। एक आम चुनौती वास्तविक चोटियों को शोर-प्रेरित उतार-चढ़ाव से अलग करना है। .signal.find_peaks फ़ंक्शन। यह फ़ंक्शन विशिष्ट मानदंडों के आधार पर चोटियों को फ़िल्टर करने और पहचानने के विकल्प प्रदान करता है।
find_peaks पैरामीटर्स को समझना
find_peaks की शक्ति का प्रभावी ढंग से उपयोग करने के लिए, इसके मापदंडों को समझना महत्वपूर्ण है:
चौड़ाई
: एक चोटी की न्यूनतम चौड़ाई।
- दहलीज: चोटी और उसके पड़ोसियों के बीच न्यूनतम अंतर।
- दूरी : लगातार चोटियों के बीच न्यूनतम दूरी।
- प्रमुखता: ऊंचे भूभाग तक पहुंचने के लिए एक चोटी से उतरने के लिए आवश्यक न्यूनतम ऊंचाई।
- प्रमुखता पर जोर
सभी मापदंडों में से,
प्रमुखता
वास्तविक चोटियों को शोर से अलग करने में सबसे प्रभावी है। इसकी परिभाषा में उच्च शिखर तक पहुंचने के लिए आवश्यक न्यूनतम ऊर्ध्वाधर वंश शामिल है। आदर्श समाधान नकली शोर शिखरों के आगे झुके बिना सटीक रूप से चोटियों की पहचान करेगा।
np के रूप में सुन्न आयात करें
matplotlib.pyplot को plt के रूप में आयात करें
scipy.signal से आयात find_peaks
# सिग्नल उत्पन्न करें
x = np.sin(2*np.pi*(2**np.linspace(2,10,1000))*np.arange(1000)/48000) np.random.सामान्य(0, 1, 1000) * 0.15
# विभिन्न मापदंडों का उपयोग करके शिखर खोजें
चोटियाँ, _ = खोजें_चोटियाँ(x, दूरी=20)
चोटियाँ2, _ = खोजें_चोटियाँ(x, प्रमुखता=1)
चोटियाँ3, _ = खोजें_चोटियाँ(x, चौड़ाई=20)
चोटियाँ4, _ = खोजें_चोटियाँ(x, सीमा=0.4)
# प्लॉट परिणाम
पीएलटी.सबप्लॉट(2, 2, 1)
plt.plot(चोटियाँ, x[चोटियाँ], "xr"); plt.प्लॉट(x); plt.legend(['दूरी'])
पीएलटी.सबप्लॉट(2, 2, 2)
plt.plot(peaks2, x[peaks2], "ob"); plt.प्लॉट(x); plt.legend(['प्रमुखता'])
पीएलटी.सबप्लॉट(2, 2, 3)
plt.plot(peaks3, x[peaks3], "vg"); plt.प्लॉट(x); plt.legend(['चौड़ाई'])
पीएलटी.सबप्लॉट(2, 2, 4)
plt.plot(peaks4, x[peaks4], "xk"); plt.प्लॉट(x); plt.legend(['सीमा'])
plt.show()
जैसा कि परिणामों से देखा गया है, प्रमुखता (दूसरे सबप्लॉट में नीली रेखा) का उपयोग प्रभावी ढंग से वास्तविक चोटियों को अलग करता है, जबकि दूरी, चौड़ाई और सीमा शोर की उपस्थिति में निम्न प्रदर्शन प्रदान करती है।