2008-10-15 9 views
9

मैं एक डिवाइस से डेटा पढ़ रहा हूं जो दूरी को मापता है। मेरी नमूना दर अधिक है ताकि मैं दूरी में बड़े बदलावों को माप सकूं (यानी वेग) लेकिन इसका मतलब यह है कि, जब वेग कम होता है, तो डिवाइस कई माप प्रदान करता है जो समान होते हैं (डिवाइस की ग्रैन्युलरिटी के कारण)। इसका परिणाम 'चरणबद्ध' वक्र में होता है।डेटा को 'चिकनी' कैसे करें और रेखा ढाल की गणना कैसे करें?

वेग की गणना करने के लिए वक्र को सुचारू बनाने के लिए मुझे क्या करना है। इसके बाद मुझे त्वरण की गणना करने की आवश्यकता है।

इस बारे में सबसे अच्छा कैसे जाना है?

(। 1000Hz अप करने के लिए नमूना दर, 10 हर्ट्ज की गणना दर ठीक हो जाएगा सी VS2005 में # का उपयोग करना)

उत्तर

25

मूग से विकिपीडिया प्रविष्टि डेटा को चिकनाई के लिए एक अच्छा प्रारंभिक बिंदु है। लेकिन यह निर्णय लेने में आपकी मदद नहीं करता है।

यह सब आपके डेटा, और आवश्यक प्रसंस्करण गति पर निर्भर करता है।

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

साविट्स्की-गोले फास्ट एल्गोरिदम। चलती औसत के रूप में तेजी से। वह चोटी की ऊंचाइयों को संरक्षित रखेगा। लागू करने के लिए कुछ मुश्किल है। और आपको सही गुणांक की आवश्यकता है। मैं इसे चुनूंगा।

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

उपरोक्त आपके सिग्नल पर शोर को कम करेगा।

अगला आपको "त्वरण" की शुरुआत और अंत बिंदु का पता लगाना है। आप मूल सिग्नल के Derivative बनाकर ऐसा कर सकते हैं। बिंदु (ओं) जहां व्युत्पन्न वाई-अक्ष (शून्य) को पार करता है, शायद आपके सिग्नल में चोटियों का होता है, और त्वरण की शुरुआत और अंत का संकेत हो सकता है।

फिर आप मिनियम और अधिकतम त्वरण प्राप्त करने के लिए दूसरी डिग्री व्युत्पन्न बना सकते हैं।

+1

यदि आप चीजों को सही तरीके से मॉडल करते हैं, तो कलमान फ़िल्टर आपको वेग और त्वरण सीधे देगा। –

+0

Savitzky-Golay के लिए एक अच्छा कोड उदाहरण http://www.procoders.net/?p=11 – Wouter

+0

पर पाया जा सकता है एसजी आपके गुणांक प्राप्त करने के बाद लागू करने के लिए तुच्छ है। बस उन्हें खोजने के लिए आर sgolay का उपयोग करें। – Paul

9

आप एक चौरसाई फिल्टर की आवश्यकता, सरल एक "का मूविंग औसत" होगा: बस के औसत की गणना अंतिम एन अंक।

यहां सवाल यह है कि, एन को कैसे निर्धारित किया जाए, क्या आप हमें अपने आवेदन के बारे में और बता सकते हैं?

(अन्य, अधिक जटिल फिल्टर कर रहे हैं। वे वे इनपुट डेटा कैसे बनाए रखने पर बदलती हैं। एक अच्छा सूची Wikipedia में है)

संपादित !: 10 हर्ट्ज के लिए, पिछले 100 मूल्यों औसत निकालते हैं।

+0

ठीक कर दिया। धन्यवाद! – moogs

+0

क्या आप कृपया बता सकते हैं कि 10 हर्ट्ज के लिए 100 मानों का उपयोग क्यों करें? धन्यवाद। –

+0

@ गुइडो - उसने जो कहा उसके बारे में मेरी व्याख्या से, उसके पास 1000 सेकंड प्रति सेकंड है, लेकिन केवल एक बार डेटा को 10 बार प्राप्त करने की आवश्यकता है। तो, एक साधारण तरीका है कि केवल 100 मानों को एक के रूप में मानें (औसत प्राप्त करें)। – moogs

0

आप डेटा को सुगम बनाने के लिए moving average का उपयोग कर सकते हैं।

1

उपर्युक्त लेखों के अलावा, Catmull-Rom Splines पर एक नज़र डालें।

+0

कैटमुल-रोम महान घटता हैं नियमित रूप से स्थानांतरित डेटा के लिए लेकिन चिकनी शोर के बजाय हाइलाइट करना होता है। मैं क्यूबिक या वर्गिक splines का उपयोग करने के लिए और अधिक लुभाना होगा, भले ही वे सभी डेटा बिंदुओं से गुजरना नहीं है। –

0

जीवीएस के अलावा उत्कृष्ट उत्तर के अलावा आप कुछ सामान्य वक्र फिटिंग जैसे क्यूबिक या क्वाड्रैटिक स्प्लिंस का उपयोग करके अपने औसत परिणामों के चरणबद्ध प्रभाव को चिकनाई/कम करने पर भी विचार कर सकते हैं।

3

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

आप साविट्स्की-गोले के सर्वश्रेष्ठ फिट बहुपदों के माध्यम से शोर सिग्नल के पहले व्युत्पन्न का भी अनुमान लगा सकते हैं - इन्हें कभी-कभी साविट्स्की-गोले डेरिवेटिव कहा जाता है - और आम तौर पर पहले व्युत्पन्न का एक अच्छा अनुमान देते हैं।

काल्मैन फ़िल्टरिंग बहुत प्रभावी हो सकती है, लेकिन यह भारी कम्प्यूटेशनल रूप से है - गति के लिए एक छोटे से रूपांतरण को हरा करना मुश्किल है!

पॉल
CenterSpace सॉफ्टवेयर

संबंधित मुद्दे