2015-03-03 2 views
5

पर "चौड़ाई" तर्क की इकाइयां मैं widths पैरामीटर के बारे में उलझन में हूं जो scipy.signal.cwt() पर और scipy.signal.find_peaks_cwt() तक विस्तारित हो जाती है। ए previous and very helpful Stack Overflow question (और उसमें पॉइंटर्स) ने मेरे अधिकांश भ्रम को समझाया। widths तराजू की एक सरणी है जिसके द्वारा आपके डेटा के साथ रूपांतरण से पहले लहर को फैलाया जा सकता है।scipy.signal.cwt() फ़ंक्शन

जिस बिंदु ने मुझे अभी भ्रमित किया है, widths के तत्वों की इकाइयां क्या हैं? क्या 1 की चौड़ाई का मतलब है कि वेवलेट एक "इंडेक्स" चौड़ा हो जाता है, जहां सूचकांक data के तत्वों के बीच की दूरी है? सबसे पहले मैंने माना कि यह मामला था, लेकिन (ए) चौड़ाई गैर-पूर्णांक मान ले सकती है, और (बी) cwt() परिणाम चौड़ाई के आधार पर भिन्न हो सकते हैं।

यहां कुछ कोड है जो मेरे भ्रम को दर्शाता है। आखिरी दो पंक्तियां अलग-अलग परिणाम क्यों देती हैं?

#generating an arbitrary signal with overlapping gaussian peaks with various 
npeaks = 6 
support = np.arange(0,1.01,0.01) 
pkx = np.array([0.2, 0.3, 0.38, 0.55, 0.65]) #peak locations 
pkfun = sum(stats.norm.pdf(support, loc=pkx[i], scale=0.03) for i in range(0,npeaks-1)) 

#finding peaks for two different setting of widths 
pkindsOne = sig.find_peaks_cwt(pkfun, widths = np.arange(4,6), wavelet = sig.ricker) 
pkindsTwo = sig.find_peaks_cwt(pkfun, widths = np.arange(4,6.4), wavelet = sig.ricker) 

#printing to show difference between calls 
for ind, el in enumerate(pkindsTwo): 
    print el, pkindsOne[ind] 
20 20 
36 36 
38 38 
55 55 
63 66 
66 91 
91 

परिणाम निकट हैं, लेकिन दूसरी कॉल इनपुट डेटा के तत्व 63 पर एक नकली चोटी पाती है। इस प्रकार मुझे विश्वास नहीं है कि चौड़ाई की इकाइयां डेटा वेक्टर के सूचकांक हैं। लेकिन वे और क्या हो सकता है? यदि नहीं, widths की इकाइयां क्या हैं? cwt() और find_peaks_cwt() किसी भी एक्स-अक्ष इकाइयों के बारे में कभी नहीं जानते या देखें (उदा। support वेक्टर मैं अपने कोड में परिभाषित करता हूं), तो मुझे क्या याद आ रही है? जब, व्यावहारिक रूप से बोलते हुए, क्या यह कभी भी गैर-पूर्णांक चौड़ाई का उपयोग करने के लिए समझ में आता है?

उत्तर

5

मेरे पास एक ही सवाल था। स्रोत कोड को देखते हुए, मेरा सबसे अच्छा अतिथि यह है कि इकाइयां "नमूने की संख्या" में हैं। scipy.signal.wavelets.cwt भीतर कुंजी कोड लाइन है:

wavelet_data = wavelet(min(10 * width, len(data)), width) 

यहाँ, "तरंगिका" एक समारोह (मां तरंगिका के बिल्डर) जो नमूनों की संख्या में पैरामीटर "length_of_wavelet" और "width_of_wavelet" प्राप्त करता है । कारण चौड़ाई अभी भी एक गैर-पूर्णांक मान हो सकती है कि (यदि मैं गलत नहीं हूं) यह स्केलिंग कारक का प्रतिनिधित्व करता है, जो कोई वास्तविक सकारात्मक संख्या ले सकता है क्योंकि यह केवल उस फॉर्मूलेशन का एक कारक है जो आकार के प्रभाव को प्रभावित करता है तरंगिका।