2009-06-14 17 views
8

क्या कोई एल्गोरिदम है जिसका उपयोग यह निर्धारित करने के लिए किया जा सकता है कि निश्चित समय अंतराल पर लिया गया डेटा का नमूना साइन लहर का अनुमान लगाता है या नहीं?यह निर्धारित करना कि कोई डेटासेट साइन साइन

+1

मुझे यह सुनिश्चित होगा कि * किसी भी * * सीमित * डेटा के सेट (विशिष्ट एक्स मानों के साथ) दिया गया है, तो आप एक साइन लहर ढूंढ सकते हैं जो बिल्कुल ठीक है, अगर आप आवृत्ति पर किसी प्रकार की बाधा नहीं डालते हैं (जैसे ही आवृत्ति बढ़ जाती है, साइन लहर एक अंतरिक्ष भरने वक्र तक पहुंचती है)। – AakashM

+0

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

+0

सबसे अच्छा तरीका इस बात पर निर्भर करेगा कि आप डेटा को सभ्यता से कैसे दूर करते हैं। यादृच्छिक शोर? विकृत waveshape (उदा। त्रिभुज या clipped बंद चोटियों)? एक शुद्ध साइन बनाम कई साइनों का योग? – DarenW

उत्तर

16

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

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

+0

साइनुसेन - सीनी? –

+0

बहुवचन साइनस भी लगता है ... यह समस्या है जब आपकी मां की जीभ में टाइप नहीं किया जाता है। तब सिनाई :)? –

+3

गुणवत्ता का एक अच्छा अनुमान उच्च चोटी की ऊंचाई होगी, जो अन्य चोटियों की ऊंचाइयों के योग से विभाजित होगा। इस उपाय का उपयोग करके, 1 का मतलब एकदम सही फिट है, 0 का मतलब बिल्कुल फिट नहीं है। – Martijn

0

least squares method देखें।

@CookieOfFortune: मैं सहमत हूं, लेकिन फूरियर श्रृंखला फिट कम से कम वर्गों में इष्टतम है (जैसा कि विकिपीडिया लेख पर कहा गया है)।

यदि आप अपने इनपुट डेटा के साथ पहले चारों ओर खेलना चाहते हैं, तो वोल्फ्राम अल्फा पर Discrete Fourier Transformation (DFT) देखें। जैसा कि पहले उल्लेख किया गया है, यदि आप तेजी से कार्यान्वयन चाहते हैं तो आपको कई FFT-libraries में से एक को देखना चाहिए।

+3

साइन लहर शायद एक चरण ऑफसेट है, जो कम से कम वर्ग विधि को लागू करने के लिए और अधिक कठिन उपयोग करेगा। – CookieOfFortune

0

नीले रंग में शॉट: आप इस तथ्य का लाभ उठा सकते हैं कि a*sin(t) का अभिन्न a*cos(t) है। आपके डेटा के न्यूनतम/अधिकतम ट्रैक को ट्रैक करने से आपको a पता होना चाहिए।

+0

∫ (ए · पाप (के टी + एम) + बी) डीटी = (-ए/के) · कॉस (के टी + एम) + बी · टी + सी –

+0

मुझे यकीन नहीं है कि यह एक उपयोगी दिशा है अंदर जाने के लिए। हालांकि, इस बात का उपयोग करने में उपयोग किया जा सकता है कि एक साइन का दूसरा व्युत्पन्न मूल के आनुपातिक और नकारात्मक है। डी 2/डीएक्स 2) पाप (केएक्स) = -के^2 पाप (एक्स)। शोर और राउंडऑफ त्रुटि के प्रभाव को कम करने के लिए, एक चिकनाई व्युत्पन्न का उपयोग करें - Savitzky-Golay फ़िल्टरिंग पर पढ़ें। – DarenW

7

आप चौकोर परिवर्तन की गणना कर सकते हैं और एक स्पाइक की तलाश कर सकते हैं। यह आपको बताएगा कि डेटासेट उस आवृत्ति पर साइन वक्र का अनुमान लगाता है।

+0

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

+1

आवृत्ति क्या है इससे कोई फर्क नहीं पड़ता कि आप एक प्रमुख स्पाइक प्राप्त करेंगे। सवाल आवृत्ति निर्धारित करने के लिए नहीं पूछता है; बस यह निर्धारित करने के लिए कि यह एक साइन है या नहीं। – endolith

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