एफएफटी कार्यान्वयन का परीक्षण करने के लिए मुझे किस डेटा का उपयोग करना चाहिए, और मुझे किस सटीकता की उम्मीद करनी चाहिए?


14

मैं एफएफटी एल्गोरिथ्म को लागू करने के प्रयास में शामिल हूं, और उत्सुक हूं कि इनपुट परीक्षण डेटा के उपयोग के लिए अनुशंसित सलाह क्या है - और क्यों! - और क्या सटीकता की उम्मीद है।

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

सटीकता पर, विकिपीडिया कहता है कि त्रुटि ओ (ई लॉग एन) होनी चाहिए, लेकिन पूर्ण शब्दों में एक उचित उम्मीद क्या है?

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

जवाबों:


12

यदि आप शुद्धता के लिए एक FFT एल्गोरिथ्म को सत्यापित करना चाहते हैं , तो इस अर्थ में कि यह वांछित कार्य करता है जिसमें असतत फूरियर रूपांतरण के ज्ञात गुण हैं , तो आप प्रस्तावित दृष्टिकोण का उपयोग कर सकते हैं:

एर्गुन, फंडा। (1995, जून)। बहुभिन्नरूपी रैखिक कार्यों का परीक्षण: जनरेटर की अड़चन पर काबू पाना। में प्रोक। बीस-सातवीं ऐन। ACM सिम्प। कम्प्यूटिंग का सिद्धांत । (पृष्ठ ४० 40-४१६)।

उपरोक्त कागज को FFTW के निर्माताओं द्वारा संदर्भित करने के लिए उनकी पसंद के तरीके के रूप में संदर्भित किया जाता है, यह पुष्टि करने के लिए कि एक विशेष FFT कार्यान्वयन वह करता है जो उसे करना चाहिए। प्रस्तावित तकनीक फ़ंक्शन को तीन मुख्य घटकों में विभाजित करती है जिन्हें अलग-अलग परीक्षणों से सत्यापित किया जाता है:

  • Linearity: एफ टी (फूरियर परिवार में उसके अन्य चचेरे भाई रूपांतरण के साथ) एक है रैखिक ऑपरेटर इतना के सभी मानों के लिए, , निम्न समीकरण पकड़ करना होगा:1,2,एक्स1[n],एक्स2[n]

एफएफटी(1एक्स1[n]+2एक्स2[n])=1एफएफटी(एक्स1[n])+2एफएफटी(एक्स2[n])
  • यूनिट आवेग का डीएफटी: क्रोनकर डेल्टा फ़ंक्शन के बराबर समय-डोमेन सिग्नल एफएफटी एल्गोरिथ्म के इनपुट पर लागू होता है और यूनिट इंपल्स फ़ंक्शन के ज्ञात डीएफटी के खिलाफ जांच की जाती है (यह सभी आउटपुट में एक निरंतर मूल्य में बदल जाता है। डिब्बे)। यदि एफएफटी एल्गोरिथ्म एक आईएफएफटी प्रदान करता है, तो इसे रिवर्स में यह दिखाने के लिए परीक्षण किया जा सकता है कि यह यूनिट इंपल्स फ़ंक्शन को फिर से प्राप्त करता है।

  • समय की शिफ्ट: एफएफटी एल्गोरिथ्म के इनपुट पर डेटा के दो सेट लागू होते हैं; समय डोमेन में दोनों के बीच एकमात्र अंतर एक निरंतर समय बदलाव है। डीएफटी के ज्ञात गुणों के आधार पर, यह दो संकेतों की आवृत्ति डोमेन अभ्यावेदन के बीच एक ज्ञात रैखिक चरण बदलाव को प्रभावित करना चाहिए, जहां चरण बदलाव का ढलान समय पारी के लिए आनुपातिक है।

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


धन्यवाद! क्या लेखकों के पास a1, a2, X1 [n] और x2 [n] के मूल्यों के लिए कोई सुझाव है, जो कि रैखिकता परीक्षण में उपयोग करते हैं (या क्या वे कहते हैं कि यह काफी हद तक कोई फर्क नहीं पड़ता)? और, उस मामले के लिए, डेटा के लिए टाइम-शिफ्ट टेस्ट के लिए उपयोग करना है?
ब्रूक्स मूसा

3
वास्तव में कागज को पढ़ने के बाद, मैं अपने स्वयं के प्रश्न का उत्तर दे सकता हूं: लेखक यह वर्णन नहीं करते हैं कि कोई कैसे रैखिकता परीक्षण करता है, बल्कि यह मान लें कि किसी ने यह साबित करने के लिए पर्याप्त किया है कि यह "अधिकांश इनपुट" के लिए सही है। इसके अलावा, यह कागज सटीक अंकगणित को सटीक शुद्धता का प्रमाण बता रहा है; यह एक अनुमानित कार्यक्रम में संख्यात्मक त्रुटि को चिह्नित करने के लिए एक साधन का वर्णन नहीं कर रहा है (जैसा कि परिमित-सटीक अंकगणित का उपयोग करने से आवश्यक रूप से परिणाम होता है)।
ब्रुक्स मूसा

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

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

अच्छी बात; मुझे शायद उनसे अलग सवाल पूछना चाहिए था।
ब्रूक्स मूसा

5

जैसा कि प्रश्न में उल्लेख किया गया है, मुझे संग्रहित comp.dsp यूज़नेट पोस्ट ( http://www.dsprelated.com/showmessage/71595/1.php , "tdillon" द्वारा पोस्ट) में सुझावों का एक सेट मिला :

A.Single FFT tests - N inputs and N outputs
 1.Input random data
 2.Inputs are all zeros
 3.Inputs are all ones (or some other nonzero value)
 4.Inputs alternate between +1 and -1.
 5.Input is e^(8*j*2*pi*i/N) for i = 0,1,2, ...,N-1. (j = sqrt(-1))
 6.Input is cos(8*2*pi*i/N) for i = 0,1,2, ...,N-1.
 7.Input is e^((43/7)*j*2*pi*i/N) for i = 0,1,2, ...,N-1. (j = sqrt(-1))
 8.Input is cos((43/7)*2*pi*i/N) for i = 0,1,2, ...,N-1.

B.Multi FFT tests - run continuous sets of random data
 1.Data sets start at times 0, N, 2N, 3N, 4N, ....
 2.Data sets start at times 0, N+1, 2N+2, 3N+3, 4N+4, ....

धागा भी दो साइन करने का सुझाव देता है, एक बड़े आयाम के साथ और एक छोटे आयाम के साथ।

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


1
क्या होगा "1. इनपुट यादृच्छिक डेटा" प्रकट?
दिलीप सरवटे

1
@DilipSarwate: क्रैश को प्रकट करने के लिए फ़ज़-परीक्षण उपयोगी हो सकता है। और, शोर इनपुट के प्रकार (कहते हैं, गुलाबी शोर या सफेद शोर) के आधार पर, यह जांचने में उपयोगी हो सकता है कि समग्र ऊर्जा वितरण अपेक्षित है।
धूम्रपान करने वाला

2
@Dilip - मेरा fft "स्मोक टेस्ट" यह है कि ifft (fft (random_stuff)) ~ = random_stuff।
हॉटपावर 2

एनसीएन(0,1)99%एन सीएन(0,1)

2
@Dipip: मैं एक हार्डवेयर लड़का हूँ। मैं कुछ ऐसा चाहता था जो सभी गुणक और CSAs में सभी बिट्स के उच्च प्रतिशत को टॉगल कर सके।
हॉटपावर 2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.