2011-08-09 8 views
12

क्या ऐसी कोई प्रक्रिया है जो एक गैर-आवधिक पृथक समय सिग्नल से अज्ञात डीसी ऑफसेट को निर्धारित/हटा सकती है?गैर-आवधिक असतत समय सिग्नल से अज्ञात डीसी ऑफसेट हटाएं

प्रश्न में सिग्नल में 25 हर्ट्ज की नमूना दर है और इसमें 0.25 और 3 हर्ट्ज के बीच ब्याज की हार्मोनिक्स है।

मैंने मिश्रित परिणामों को हाईपास फ़िल्टर का उपयोग करने का प्रयास किया है, पहले मैंने एफसी = 0 हर्ट्ज के साथ 10 वें ऑर्डर गॉसियन का उपयोग किया था, इसने ऑफसेट को हटाने का अच्छा काम किया था, लेकिन यह एसी को भी अलग कर दिया गया था हालांकि यह संकेत आकार को बरकरार रखता था, इसके बाद मैंने 0Hz पर एक स्टॉपबैंड और 0.25 हर्ट्ज पर पासबैंड के साथ एक 168 वें आदेश का उपयोग किया, चरण शिफ्ट बहुत गंभीर थी और संकेत आकार बहुत विकृत हो गया था, अगर पास बैंड को 0.1 हर्ट्ज तक लाया गया तो विरूपण संभवतः कम हो सकता है लेकिन यह बस उस चरण शिफ्ट को और बढ़ाएगा जिसे मुझे बहुत कम रखने की आवश्यकता है।

से पहले और एक्स लागू करने के बाद - के रूप में पॉल आर ने सुझाव दिया LPF (x),

enter image description here

उत्तर

10

मैं डीसी पर एक पायदान फ़िल्टर का उपयोग करने और शून्य चरण बनाने के लिए filtfilt का उपयोग करने की सलाह देता हूं।

a = [1 , -0.98]; b = [1,-1]; 

y = filtfilt(b,a,x); 

a के करीब दूसरा मान -1 संकरा अपने पायदान हो जाएगा हो जाता है।

+0

मुझे कुछ और परीक्षण करने की ज़रूरत है, लेकिन ऐसा लगता है कि वास्तव में अच्छे परिणाम मिलते हैं! – volting

+0

फ़िल्टर की आवृत्ति प्रतिक्रिया की जांच करने के लिए 'freqz (xcorr (b, b), xcorr (a, a)) का उपयोग करें। 'Xcorr' filtfilt' के जेड-ट्रांसफॉर्म समकक्ष हैं। यह देखने के लिए कि आपका पायदान कितना चौड़ा/संकीर्ण है, 'ए (2)' के विभिन्न मानों का प्रयास करें। – Phonon

+1

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

3

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

y = HPF(x) 

ऐसा करते हैं:

y = x - LPF(x) 

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

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

+0

मैंने आपके द्वारा सुझाए गए एलपीएफ का उपयोग करने की कोशिश की लेकिन इसके वांछित प्रभाव नहीं होने के कारण, मैंने एक दर्जन अलग एलपीएफ का परीक्षण किया, सबसे अच्छा एफसी = 0.0001 हर्ट्ज और अल्फा = 1.1 के साथ 50 टर्म गॉसियन था। समस्या यह है कि ब्याज की निम्न आवृत्ति हार्मोनिक विकृत हो रही है। आईवी ने मेरे प्रश्न – volting

+0

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

+0

मैंने भूखंड जोड़े। जैसा कि आप देख सकते हैं कि एलपीएफ कम आवृत्ति सिग्नल को कैप्चर करता है जिसे मैं फ़िल्टर नहीं करना चाहता हूं। – volting

9

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

यदि दूसरी तरफ, आपके पास यह मानने का एक कारण है कि डीसी घटक वास्तव में डीसी नहीं है, बल्कि बहुत कम आवृत्ति वाला एसी है, तो आप अपने सिग्नल के बेहतर औसत सेगमेंट होंगे, सिग्नल नहीं पूरी तरह से, जो आवेग प्रतिक्रिया के साथ कम-पास फ़िल्टर का उपयोग करने जैसा ही होता है जो सिग्नल की लंबाई कम होता है। इस मामले में आपको "डीसी" घटक के बारे में कुछ धारणाएं करनी होंगी।

+0

समस्या यह है कि सिग्नल में निरंतर डीसी ऑफ़सेट और ब्याज के दो सिग्नल घटक होते हैं, एक कम आवृत्ति घटक और उच्च आवृत्ति घटक जो पूर्व पर अतिसंवेदनशील होता है। डीसी फ़िल्टर करने का प्रयास कम आवृत्ति घटक विकृत करता है। – volting

+0

यदि आप निम्न आवृत्ति संकेत के कई चक्रों पर औसत करते हैं, तो औसत में इसका योगदान शून्य है क्योंकि सकारात्मक और नकारात्मक नमूने एक-दूसरे को रद्द करते हैं, इसलिए कोई विरूपण नहीं होना चाहिए। क्या आप एक उदाहरण के रूप में एक संकेत अपलोड कर सकते हैं? यह आपके प्रश्न का उत्तर देने में मदद करेगा। –

+0

ऑफ़सेट के आधार पर निम्न आवृत्ति संकेत परिमाण नकारात्मक कभी नहीं हो सकता है और यह किसी भी तरह आवधिक नहीं है, इसलिए इसका योगदान शून्य नहीं हो सकता है। आईवी ने मेरे प्रश्न में एक ग्राफ जोड़ा ताकि आप सिग्नल की प्रकृति का विचार प्राप्त कर सकें। – volting

1

जैसा कि अन्य ने कहा है, डीसी ऑफसेट को हटाने के लिए, आप बस माध्य घटा सकते हैं।आपके सिग्नल को आवधिक होने की आवश्यकता नहीं है, लेकिन डीसी घटक का अच्छा अनुमान प्राप्त करने के लिए इसे काफी समय तक होना आवश्यक है।

यदि आप अभी भी एक फ़िल्टरिंग दृष्टिकोण के साथ जाना चाहते हैं, तो आप filtfilt का उपयोग करके चरण अंतराल के कारण गंभीर विकृति को खत्म कर सकते हैं। यह फ़ंक्शन आपके टाइमरीज़ को एक बार आगे की दिशा में फ़िल्टर करता है और फिर एक बार विपरीत दिशा में फ़िल्टर करता है, ताकि चरण विकृतियां रद्द हो जाएं।

1

आप एक सममित एफआईआर फ़िल्टर को कम-पास फ़िल्टर के रूप में डिज़ाइन कर सकते हैं जो डीसी का अनुमान लगाता है और फिर आपके इनपुट सिग्नल से आउटपुट घटाता है। इस फ़िल्टर में निरंतर समूह-देरी है।

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