कलमन फ़िल्टर का उपयोग कैसे करें?


12

मेरे पास 2 डी स्पेस (एक सतह) में किसी वस्तु का प्रक्षेपवक्र है। प्रक्षेपवक्र को (x,y)निर्देशांक के अनुक्रम के रूप में दिया गया है । मुझे पता है कि मेरे माप शोर हैं और कभी-कभी मेरे पास स्पष्ट आउटलेयर हैं। इसलिए, मैं अपनी टिप्पणियों को फ़िल्टर करना चाहता हूं।

जहां तक ​​मैंने कलमन फिल्टर को समझा, यह वही करता है जो मुझे चाहिए। इसलिए, मैं इसका उपयोग करने की कोशिश करता हूं। मुझे यहां एक अजगर का कार्यान्वयन मिला । और यह उदाहरण है कि प्रलेखन प्रदान करता है:

from pykalman import KalmanFilter
import numpy as np
kf = KalmanFilter(transition_matrices = [[1, 1], [0, 1]], observation_matrices = [[0.1, 0.5], [-0.3, 0.0]])
measurements = np.asarray([[1,0], [0,0], [0,1]])  # 3 observations
kf = kf.em(measurements, n_iter=5)
(filtered_state_means, filtered_state_covariances) = kf.filter(measurements)
(smoothed_state_means, smoothed_state_covariances) = kf.smooth(measurements)

मुझे इनपुट और आउटपुट की व्याख्या से कुछ परेशानी है। मुझे लगता है कि measurementsवास्तव में मेरे माप (निर्देशांक) क्या हैं। हालाँकि मैं थोड़ा भ्रमित हूँ क्योंकि उदाहरण में माप पूर्णांक हैं।

मुझे कुछ transition_matricesऔर प्रदान करने की आवश्यकता है observation_matrices। मुझे वहां क्या मूल्य रखना चाहिए? इन मैट्रिस का क्या मतलब है?

अंत में, मुझे अपना आउटपुट कहां मिल सकता है? यह होना चाहिए filtered_state_meansया smoothed_state_means। इन सरणियों के सही आकार हैं (2, n_observations)। हालाँकि, इन सरणी में मान मूल निर्देशांक से बहुत दूर हैं।

तो, इस कलमन फ़िल्टर का उपयोग कैसे करें?


मैट्रिस का अनुमान कलमन फ़िल्टर द्वारा लगाया जाएगा। आपको शायद अनुकूलन एल्गोरिथ्म या इस तरह के लिए कुछ शुरुआती मूल्य देने होंगे।
रिचर्ड हार्डी

1
आपको एक राज्य अंतरिक्ष मॉडल निर्दिष्ट करके शुरू करने की आवश्यकता है, जो आपकी टिप्पणियों को बिना पढ़े राज्यों से संबंधित करता है और बताता है कि राज्य समय के साथ कैसे विकसित होता है; यह आपको आपके संक्रमण और अवलोकन मैट्रिक्स के साथ-साथ राज्य त्रुटि ("प्रक्रिया शोर") के कोवरियन मैट्रिक्स और अवलोकन त्रुटि के लिए सहसंयोजक मैट्रिक्स (ये एफ, एच, क्यू और आर हैं विकिपीडिया पृष्ठ, ए में देगा) सी, क्यू एंड आर आपके द्वारा दिए गए लिंक पर)। कलमैन फेल्टर हर बार (उन सभी चीजों को निर्दिष्ट करने के बाद) एक बार (अप्रचलित) स्थिति और उसके विचरण-सह-मैट्रिक्स मैट्रिक्स का अनुमान लगाने के लिए एक एल्गोरिथ्म है।
Glen_b -Reinstate मोनिका

यह फ़ंक्शन आपको लिंक करने के लिए मानक केएफ से कुछ अलग लागू करने के लिए लगता है क्योंकि यह ईएम का उपयोग कुछ ऐसी चीजों का अनुमान लगाने के लिए कर सकता है जो आप सामान्य रूप से निर्दिष्ट करेंगे।
Glen_b -Reinstate मोनिका

जवाबों:


8

यहां 2-आयामी कलमन फ़िल्टर का एक उदाहरण दिया गया है जो आपके लिए उपयोगी हो सकता है। यह पायथन में है।

राज्य वेक्टर चार चर के होते हैं: x0- दिशा में स्थिति, X1-दिशा में स्थिति, x0-दिशा में वेग, और X1-दिशा में वेग। टिप्पणी लाइन "एक्स: प्रारंभिक स्थिति 4-टपल ऑफ लोकेशन और वेग देखें: (x0, X1, x0_dot, X1_dot)" देखें।

राज्य-संक्रमण मैट्रिक्स (F), जो सिस्टम / ऑब्जेक्ट्स को अगले राज्य की भविष्यवाणी की सुविधा देता है, स्थिति और वेग की वर्तमान स्थिति को जोड़ती है स्थिति की भविष्यवाणी करने के लिए (यानी x0 + x0_dot और X1 + X1_dot) और वेग के लिए वर्तमान राज्य मान वेग (यानी x0_dot और X1_dot)।

माप मैट्रिक्स (एच) x0 और X1 दोनों स्थितियों में केवल स्थिति पर विचार करने के लिए प्रकट होता है।

गति शोर मैट्रिक्स (क्यू) 4-बाय -4 पहचान मैट्रिक्स के लिए आरंभीकृत है, जबकि माप शोर 0.0001 पर सेट है।

उम्मीद है कि यह उदाहरण आपको अपना कोड काम करने की अनुमति देगा।


1

कलमन फ़िल्टर एक मॉडल आधारित भविष्य कहनेवाला फ़िल्टर है - क्योंकि फ़िल्टर के इस तरह के सही कार्यान्वयन में इनपुट पर नियमित माप के साथ खिलाए जाने पर आउटपुट पर बहुत कम या कोई विलंब नहीं होगा। मुझे लगता है कि पुस्तकालयों के उपयोग के विपरीत सीधे कलमन फ़िल्टर को लागू करने के लिए हमेशा अधिक सीधा होना चाहिए क्योंकि मॉडल हमेशा स्थिर नहीं होता है।

जिस तरह से फ़िल्टर काम करता है वह प्रक्रिया के गणितीय विवरण का उपयोग करके पिछली स्थिति के आधार पर वर्तमान मूल्य की भविष्यवाणी करता है और फिर उस सेंसर को मापने के आधार पर उस अनुमान को सही करता है। यह इस प्रकार छिपे हुए राज्य (जो मापा नहीं जाता है) और मॉडल में उपयोग किए जाने वाले अन्य मापदंडों का आकलन करने में सक्षम है जब तक कि मापा राज्य के उनके रिश्ते मॉडल में परिभाषित नहीं किए जाते हैं।

मैं आपको अधिक विस्तार से कलमन फ़िल्टर का अध्ययन करने का सुझाव दूंगा क्योंकि एल्गोरिथ्म को समझे बिना फ़िल्टर का उपयोग करने की कोशिश करते समय गलतियाँ करना बहुत आसान है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.