औसत प्रतिक्रियाएँ (और औचित्य) कैसे करें?


11

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

मेरा मानना ​​है कि उपरोक्त मानक प्रक्रिया है, हालांकि मैं इसे खराब तरीके से वर्णन कर सकता हूं। मेरी समस्या यह आती है कि कई खिड़कियों से प्रतिक्रियाओं को कैसे संयोजित किया जाए।

जहाँ तक मैं देख सकता हूँ, सभी खिड़कियों के पार जटिल मूल्यों को औसत करने के लिए सही दृष्टिकोण है। आयाम और चरण प्रतिक्रिया तो प्रत्येक आवृत्ति पर औसत मूल्य के आयाम और चरण हैं:

av_response = sum_windows(response) / n
av_amplitude = sqrt(real(av_response)**2 + imag(av_response)**2)
av_phase = atan2(imag(av_response), real(av_response))

आवृत्ति बिन पर अंतर्निहित छोरों के साथ।

लेकिन मैं calculate आयाम और प्रत्येक विंडो में चरण के लिए इसे बदलने के लिए कहा गया है पहले , और फिर औसत आयाम और सभी खिड़कियों के पार चरणों:

amplitude = sqrt(real(response)**2 + imag(response)**2)
av_amplitude = sum_windows(amplitude) / n
phase = atan2(imag(response), real(response))
av_phase = sum_windows(phase) / n

मैंने तर्क दिया है कि यह गलत है क्योंकि औसत कोण "बस गलत है" - उदाहरण के लिए 0 और 360 डिग्री का औसत 180 है, लेकिन मैं जिन लोगों के साथ काम कर रहा हूं, वे "ठीक है, हम केवल आयाम प्रदर्शित करेंगे"।

तो मेरे सवाल हैं:

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

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

[मैंने और टैग जोड़ने की कोशिश की, लेकिन प्रासंगिक नहीं पा सकते हैं और नए लोगों को नए उपयोगकर्ता के रूप में परिभाषित नहीं कर सकते हैं - क्षमा करें]


आपकी विधि को मानने के लिए वे क्या कारण देते हैं?
निबोट

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

1
क्या आपने कुछ परीक्षण मामलों को प्रदान करने की कोशिश की है? यादृच्छिक डेटा लें और इसे कुछ फिल्टर के माध्यम से ज्ञात आवृत्ति प्रतिक्रिया के साथ फ़िल्टर करें। सत्यापित करें कि स्थानांतरण फ़ंक्शन अनुमान ज्ञात स्थानांतरण फ़ंक्शन में परिवर्तित होता है।
nibot

नहीं। मैंने नहीं किया यह एक अच्छा सुझाव है। धन्यवाद। यदि अच्छी तरह से प्रस्तुत किया गया है, तो मैं देख सकता हूँ कि आश्वस्त हो रहा है।
andrew cooke

जवाबों:


13

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

आपका तरीका गणना करता है

F[y]F[x]

जहां कोण कोष्ठक डेटा सेगमेंट पर लिए गए औसत का प्रतिनिधित्व करते हैं, और फूरियर ट्रांसफॉर्म ( ) लेने से पहले प्रत्येक डेटा सेगमेंट में एक विंडो फ़ंक्शन को लागू किया जाता है ।F

एक अधिक विशिष्ट कार्यान्वयन की गणना करेगा पार वर्णक्रमीय घनत्व x और y से विभाजित पावर वर्णक्रमीय घनत्व एक्स के:

F[y]F[x]|F[x]|2=F[y]F[x]F[x]F[x]

कहाँ एक बिंदुवार उत्पाद का प्रतिनिधित्व करता है, और जटिल संयुग्म।

मेरा मानना ​​है कि यह उन डेटा सेगमेंट के प्रभाव को कम करने के लिए है, जहां डिब्बे अत्यधिक छोटे हैं।F[x]

अविवेकी अनुमान

आपके नियोक्ता ने सुझाव दिया है कि आप अनुमान लगाते हैं कि ट्रांसफर फ़ंक्शन का उपयोग किया जा रहा है

|F[y]||F[x]|

यह काम करेगा , लेकिन इसके दो बड़े नुकसान हैं:

  1. आपको किसी भी चरण की जानकारी नहीं मिलती है।
  2. यदि इनपुट और आउटपुट आपके माप में कोई अतिरिक्त शोर है, तो हस्तांतरण फ़ंक्शन का अनुमान सही नहीं होगा।xy

आपकी विधि और जिस विधि का मैंने वर्णन किया है वह सुसंगत औसत का उपयोग करके इन समस्याओं को दरकिनार करती है ।

संदर्भ

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

मान्यकरण

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


आह! धन्यवाद। मैं इसकी जाँच / कोशिश करूँगा।
andrew cooke

@nibot क्या, सटीक, FFT लंबाई का उपयोग यहां किया जाता है?
Spacey

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

ठीक है, एक और अंतर यह है कि आपके पास <F (y) F * (x)> / <F (x) F * (x)> है जबकि Phonon के पास <F (y)> <F * (x)> / (< F (x)> <F * (x)>) afaict: o (
andrew cooke

<F * (y)> <F * (x)> / (<F * (x)> <F * (x)>) की गणना करने का कोई मतलब नहीं है, क्योंकि <F * (x)> 's तुरंत रद्द हो जाएगा। मुझे लगता है कि जैसा मैंने लिखा है यह सही है।
'17:08 पर nibot

12

सिग्नल प्रोसेसिंग में आपका स्वागत है!

आप बिल्कुल सही कह रहे है। आप केवल डीएफटी परिमाण और चरणों को अलग-अलग औसत नहीं कर सकते हैं, विशेष रूप से चरण। यहाँ एक सरल प्रदर्शन है:

चलो । परिभाषा के अनुसार, परिमाणऔर चरण का हैं:z=a+bi|z|zz

|z|=a2+b2
z=tan1(ba)

औसत दो जटिल मूल्यों की और हैzz1z2

z=z1+z22=a1+b1i+a2+b2i2=(a1+a2)+(b1+b2)i2

इस मामले में,

|z|=(a1+a2)24+(b1+b2)24=12(a1+a2)2+(b1+b2)2a12+b12+a22+b222

इसके अलावा,

z=tan1(b1a1)+tan1(b2a2)2tan1(2(b1+b2)2(a1+a2))

यदि आप उस डिग्री की तुलना करते हैं जिस पर ये असमानताएं हैं, तो आप कह सकते हैं कि इसके लिए अनुमानितएक द्विघात शब्द से बंद है, जबकि पूरी तरह से व्यर्थ में लिए सन्निकटन ।|z|z

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

चलो , जहां के एफ टी है - वें (इसलिए superscript ) इनपुट सिग्नल का विंडो चंक (इसलिए इनपुट के लिए सबस्क्रिप्ट )। इसी तरह, आउटपुट सिग्नल के लिए, । आप देख सकते हैं कि सिग्नल बस विंडो किए गए डीएफटी का औसत है। तब आवेग प्रतिक्रिया लिए सांख्यिकीय दोहरे चैनल FFT सन्निकटन द्वारा दिया जाता हैGi(f)=Fi1(f)+Fi2(f)++FiN(f)NFik(f)kkiGo(f)=Fo1(f)+Fo2(f)++FoN(f)NGH^(f)H(f)

H^(f)=Go(f)Gi(f)|Gi(f)|2

जहां अर्थ है जटिल संयुग्मन (आपके सभी काल्पनिक भागों के चिह्न को पलटना)।()


2
धन्यवाद; मुझे यकीन नहीं था कि यह वोट देना है या निबोट के सर्वश्रेष्ठ उत्तर के रूप में - मुझे लगता है कि वे एक ही प्रक्रिया की वकालत कर रहे हैं, इसलिए पुस्तक की सिफारिश के साथ चले गए, लेकिन अगर मेरे पास दो वोट होते तो यह भी शामिल होता ...
andrew cooke

1
@andrewcooke हाँ, वे दोनों बिल्कुल एक ही बात की वकालत कर रहे हैं। मुझे आशा है कि यह आपके और आपके सहयोगियों के लिए स्पष्ट है।
फोनॉन

यह मेरे लिए एक बड़ी मदद है (फिर से धन्यवाद)। सोमवार को मैं सुझाव दूंगा कि i (1) सुझाए गए तरीके को लागू करें और (2) तीनों के लिए ज्ञात (सिंथेटिक) डेटा के साथ तुलना करें। तब उम्मीद है कि सबसे अच्छा दृष्टिकोण जीत जाएगा: ओ)
खाना पकाने

@ Phonon FFT की गणना करने के लिए हम यहां किस FFT लंबाई का उपयोग कर रहे हैं? length_of_signal + max_length_of_channel + 1?
Spacey

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

3

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


अगर वे अलग-अलग परिणाम देते हैं तो मुझे लगता है कि मैं एक निष्पक्ष अनुमान चाहता हूं। या तो निष्पक्ष है?
andrew cooke
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.