मुझे गॉसियन का उपयोग करके एक दृढ़ संकल्प करने की आवश्यकता है, हालांकि गॉसियन की चौड़ाई को बदलने की जरूरत है। मैं पारंपरिक सिग्नल प्रोसेसिंग नहीं कर रहा हूं, लेकिन इसके बजाय मुझे अपने उपकरण के संकल्प के आधार पर, मेरी सही संभाव्यता घनत्व समारोह (पीडीएफ) और `धुंधला" लेना होगा।मैं चर-चौड़ाई गॉसियन के साथ पायथन में एक रूपांतरण कैसे करूं?
उदाहरण के लिए, मान लीजिए कि मेरा पीडीएफ शुरू होता है एक स्पाइक/डेल्टा-फ़ंक्शन। मैं इसे बहुत संकीर्ण गाऊशियन के रूप में मॉडल करूंगा। मेरे उपकरण के माध्यम से दौड़ने के बाद, यह कुछ गॉसियन रिज़ॉल्यूशन के अनुसार बाहर हो जाएगा। मैं scipy.signal convolution कार्यों का उपयोग करके इसकी गणना कर सकता हूं।
import numpy as np
import matplotlib.pylab as plt
import scipy.signal as signal
import scipy.stats as stats
# Create the initial function. I model a spike
# as an arbitrarily narrow Gaussian
mu = 1.0 # Centroid
sig=0.001 # Width
original_pdf = stats.norm(mu,sig)
x = np.linspace(0.0,2.0,1000)
y = original_pdf.pdf(x)
plt.plot(x,y,label='original')
# Create the ``smearing" function to convolve with the
# original function.
# I use a Gaussian, centered at 0.0 (no bias) and
# width of 0.5
mu_conv = 0.0 # Centroid
sigma_conv = 0.5 # Width
convolving_term = stats.norm(mu_conv,sigma_conv)
xconv = np.linspace(-5,5,1000)
yconv = convolving_term.pdf(xconv)
convolved_pdf = signal.convolve(y/y.sum(),yconv,mode='same')
plt.plot(x,convolved_pdf,label='convolved')
plt.ylim(0,1.2*max(convolved_pdf))
plt.legend()
plt.show()
यह सभी के साथ सिग्मा = एक गाऊसी कोई समस्या नहीं काम करता है। लेकिन अब लगता है कि अपने मूल पीडीएफ एक कील, लेकिन कुछ व्यापक कार्य नहीं है। उदाहरण के लिए, 1.0। और अब मेरा संकल्प वास्तव में लगता है x पर x: 0.5 = x पर, धुंधला कार्य sigma_conv = 0.5 के साथ एक गॉसियन है, लेकिन x = 1.5 पर, धुंधला कार्य sigma_conv = 1.5 के साथ एक गॉसियन है। और मान लीजिए कि मैं अपने सुगंधित गॉसियन की एक्स-निर्भरता के कार्यात्मक रूप को जानता हूं। भोलेपन से, मैंने सोचा कि मैं
convolving_term = stats.norm(mu_conv,lambda x: 0.2*x + 0.1)
के ऊपर लाइन बदल जाएगा लेकिन वह काम नहीं करता, क्योंकि आदर्श समारोह चौड़ाई, नहीं एक समारोह के लिए एक मूल्य की उम्मीद है। कुछ अर्थ में, मुझे अपने घूर्णन समारोह को 2 डी सरणी होने की आवश्यकता है, जहां मेरे मूल पीडीएफ में प्रत्येक बिंदु के लिए मेरे पास एक अलग धुंधला गॉसियन है, जो एक 1 डी सरणी बनी हुई है।
तो क्या यह पाइथन में परिभाषित पहले से कार्यों के साथ ऐसा करने का कोई तरीका है? मेरे पास ऐसा करने के लिए कुछ कोड है जिसे मैंने खुद लिखा था .... लेकिन मैं यह सुनिश्चित करना चाहता हूं कि मैंने अभी पहिया का पुन: आविष्कार नहीं किया है।
अग्रिम धन्यवाद!
मैट
आपका xconv "step" '(अंतिम - पहला)/(लंबाई -1) 'x" चरण "से भिन्न होने से चौड़ाई स्केल हो जाती है (यानी, सिग्मा एक ही" इकाई "में नहीं हैं), आप वास्तव में वह चाहिए? –
"मेरे पास ऐसा करने के लिए कुछ कोड है जिसे मैंने स्वयं लिखा" => क्या आप हमें यह कोड दिखा सकते हैं? यह सहायक हो सकता है। –