संकेत लिफाफे की गणना करने के लिए हिल्बर्ट रूपांतरण?


27

मैंने सुना है कि सिग्नल के लिफाफे की गणना के लिए हिल्बर्ट ट्रांसफ़ॉर्म का उपयोग किया जा सकता है। यह कैसे काम करता है? और यह "हिल्बर्ट लिफाफा" कैसे लिफाफे से अलग है जो केवल एक संकेत को ठीक करता है?

मैं विशेष रूप से डायनेमिक रेंज कम्प्रेशन में उपयोग के लिए एक लिफाफे की गणना करने का एक तरीका खोजने में रुचि रखता हूं (यानी, स्वचालित रूप से एक ऑडियो सिग्नल के ज़ोरदार हिस्सों के "वॉल्यूम को नीचे करना")।


क्या आपके पास अभी कुछ काम कोड है? या तो हिल्बर्ट ट्रांसफॉर्म या किसी अन्य विधि के साथ?

जवाबों:


18

हिल्बर्ट ट्रांसफॉर्म का उपयोग "एनालिटिक" सिग्नल की गणना के लिए किया जाता है। उदाहरण के लिए देखें http://en.wikipedia.org/wiki/Analytic_signal । यदि आपका सिग्नल साइन वेव या एक मॉडिफाइड साइन वेव है, तो एनालिटिक सिग्नल का परिमाण वास्तव में लिफाफे जैसा दिखेगा। हालाँकि, हिल्बर्ट रूपान्तरण की गणना तुच्छ नहीं है। तकनीकी रूप से इसके लिए काफी लम्बाई के गैर-कारण वाले एफआईआर फिल्टर की आवश्यकता होती है, इसलिए इसे उचित मात्रा में एमआइपी, मेमोरी और लेटेंसी की आवश्यकता होगी।

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

एक बेहतर विकल्प ए-वेटेड फ़िल्टर लागू करना होगा ( http://en.wikipedia.org/wiki/A-weighting ) और फिर एक हानिपूर्ण चोटी या हानिपूर्ण आरएमएस डिटेक्टर करें। यह समय के साथ कथित जोर के साथ काफी अच्छी तरह से सहसंबंधित होगा और ऐसा करने के लिए अपेक्षाकृत सस्ता है।


दोनों गैर-कारण हैं, लेकिन एफएफटी विधि (स्पेक्ट्रम और आईएफएफटी का आधा भाग फेंकना) आमतौर पर एफआईआर फिल्टर की तुलना में तेज है?
एंडोलिथ

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

4

आप निम्नलिखित तरीके से एक लिफाफे की गणना करने के लिए हिल्बर्ट रूपांतरण का उपयोग कर सकते हैं। (मैं इसे MATLAB कोड के रूप में लिखूंगा):

envelope = abs(hilbert(yourTimeDomainSignal));

मेरे पास अभी गणित लिखने का समय नहीं है, (मैं बाद में कोशिश करूँगा), लेकिन बहुत ही सरलता से, आपका संकेत एक साइन लहर है। एक साइन का हिल्बर्ट रूप एक -सोइन है। (दूसरे शब्दों में, हिल्बर्ट ट्रांसफ़ॉर्म आपको हमेशा आपके संकेत को -90 डिग्री चरण में स्थानांतरित कर देगा - दूसरे शब्दों में इसका चतुर्थांश)।

यदि आप अपने सिग्नल (साइन वेव) को jअपने हिल्बरेटेड सिग्नल, (-सोइन तरंग) से जोड़ते हैं, तो आपको यह मिलता है:

sin(wt) - j.*cos(wt)

जो e ^ (j * (wt - pi / 2)) भी होता है।

इस प्रकार, जब आप इसका पूर्ण मूल्य लेते हैं, तो आपको 1 मिलता है, जो आपका लिफाफा है। (इस मामले के लिए)।


ऊप्स! नकारात्मक संकेत भूल गए - धन्यवाद दिलीप, अब तय हो गया।
Spacey

2

मुझे कम से कम दो अलग-अलग तरीकों से पता है कि एक संकेत से आयाम लिफाफे को पुनः प्राप्त करने के लिए।

मुख्य समीकरण है:

E(t)^2 = S(t)^2 + Q(S(t))^2

Where Q represents a π/2 phase shift (also known as quadrature signal).

सबसे सरल तरीका है जिसके बारे में मुझे पता है कि Q को FFT का उपयोग करके साइनसॉइडल घटकों के एक समूह में S (t) को विघटित करना होगा, प्रत्येक घटक को एक चौथाई मोड़ को एंटीक्लॉकवाइज घुमाएं (याद रखें कि प्रत्येक घटक एक जटिल संख्या होने जा रहा है इसलिए एक विशेष घटक x + iy -> -y + ix) और फिर पुनः संयोजक।

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

'हिल्बर्ट ट्रांसफॉर्म' और 'एनालिटिकल सिग्नल' नाम के कुछ शब्द यहां दिए गए हैं।

मैं इन शर्तों का उपयोग करने से बच रहा हूं क्योंकि मुझे पूरा यकीन है कि मैंने उनके उपयोग में काफी अस्पष्टता देखी है।

एक दस्तावेज मूल असली सिग्नल f (t) के (जटिल) विश्लेषणात्मक संकेत का वर्णन करता है:

Analytic(f(t)) = f(t) + i.H(f(t))

where H(f(t)) represents the 'π/2 phase shift' of f(t)

जिस स्थिति में आयाम लिफाफा बस है। विश्लेषणात्मक (एफ (टी)) |, जो हमें मूल पाइथोगोरियन समीकरण में वापस लाता है।

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


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

2
यह देखना निराशाजनक है कि कुछ व्यक्ति ने इस समुदाय (उपर्युक्त पोस्ट के माध्यम से) को एक डाउनवोट के साथ दिए गए समय और ऊर्जा को पुरस्कृत करने के लिए फिट देखा है। एक पोस्ट जिसमें अच्छी ठोस जानकारी होती है जो किसी के लिए लाभकारी होगी।
पी आई

2
@ हिलमार, हिल्बर्ट ट्रांसफॉर्म को प्राप्त करने के लिए 'नकारात्मक आवृत्तियों को हटाने' का एक बेहतर तरीका है। जैसा कि मैंने कहा, एक ऐसा तरीका जिसमें एफएफटी शामिल नहीं है। उपरोक्त के प्रकाश में, मैं इसे अभी विस्तार से विशेष रूप से उत्साहित महसूस नहीं करता हूं।
P i

हिल्बर्ट परिवर्तन पर अपने विस्तृत उत्तर की सराहना करें; आश्वासन देना चाहता था कि यह अच्छी तरह से प्राप्त है, इसलिए निराश नहीं होना चाहिए। जो कोई भी नीचे की ओर ध्यान न दें।

0

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

लेकिन डिजिटल प्रोसेसिंग के साथ ऐसा करने का एक बहुत ही आसानी से समझ में आने वाला तरीका होगा एक अनुकूली विचरण का अनुमान लगाना, जैसे 5 या 10 मिसेक का प्रतिनिधित्व करने के लिए पर्याप्त नमूनों की एक समय खिड़की लेना, और एक भूलने का कारक अल्फा ^ n (अल्फा <1) लागू करना। प्रत्येक नया नमूना जो पिछले नमूनों की तुलना में अधिक ध्यान में आता है। तब इस विचरण अनुमान के आधार पर आप अपनी इच्छा के अनुसार एचीकार्डिंग तैयार करते हैं, एक ऐसा फंक्शन जो विचरण को एक लाभ के लिए मैप करता है जिसे आप प्रत्येक ऑडियो नमूने पर लागू करते हैं। यह एक कठिन निर्णय सीमा हो सकती है, जबकि यदि विचरण कुछ सीमा से ऊपर चला जाता है तो आप कुछ कारक द्वारा लाभ कम कर देते हैं।

या अधिक नरम-निर्णय सीमा हो सकती है, जहां आप भिन्नता से लाभ के लिए एक गैर रेखीय परिवर्तन बनाते हैं, और अंतिम भिन्नता अनुमान के आधार पर हर नमूने में परिवर्तन लागू करते हैं।

यह अधिक विधर्मी तरीके हैं लेकिन कम से कम यह आपको सभी भारी गणित से बचाता है।

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