मैं असमान स्थानिक डेटा का FFT कैसे ले सकता हूँ?


55

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

यदि समाधान इस बात पर निर्भर करता है कि नमूने कैसे वितरित किए जाते हैं, तो दो विशेष परिस्थितियां हैं जिनमें मैं सबसे अधिक दिलचस्पी रखता हूं:

  • घबराना के साथ लगातार नमूना दर: जहां δ टी कश्मीर एक बेतरतीब ढंग से वितरित चर रहा है। मान लीजिए यह कहना सुरक्षित है | δ टी कश्मीर | < टी / 2tk=kT+δtkδtk|δtk|<T/2
  • एक अन्यथा स्थिर नमूना दर से नमूने गिरा: जहां n कश्मीरजेडकश्मीरtk=nkTnkZk

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

जवाबों:


40

गैर-वर्दी एफएफटी के लिए तकनीकों की एक विस्तृत विविधता है, और सबसे कुशल सभी बिल्कुल आपके मामले के लिए हैं: अर्ध-वर्दी नमूने। बुनियादी विचार है कि थोड़े महीन ("ओवरसम्प्ड") समान ग्रिड पर असमान रूप से सैंपल किए गए स्रोतों को धब्बा करना, हालांकि गॉसियंस के खिलाफ स्थानीय संकल्प। फिर एक मानक एफएफटी को ओवरसैंपर्ड यूनिफ़ॉर्म ग्रिड पर चलाया जा सकता है, और फिर गॉसियंस के खिलाफ दोषी को पूर्ववत किया जा सकता है। अच्छा कार्यान्वयन की तरह कुछ कर रहे हैं गुना अधिक में एक मानक FFT से महंगा आयाम, जहां सी कुछ 4 के पास या है 5।CddC

मैं ग्रेन्गार्ड और ली द्वारा नॉनफॉर्म यूनिफॉर्म फास्ट फूरियर ट्रांसफॉर्म में तेजी से पढ़ने की सलाह देता हूं ।

O(NdlogN)

एक महत्वपूर्ण बिंदु यह है कि उपरोक्त सभी तकनीक सन्निकटन हैं जो लंबे समय तक चलने वाले समय की कीमत पर मनमाने ढंग से सटीक बनाए जा सकते हैं, जबकि मानक एफएफटी एल्गोरिदम सटीक है।


9

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

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


6

यदि आप सॉफ्टवेयर में रुचि रखते हैं, तो मैं NFFT लाइब्रेरी की सिफारिश कर सकता हूं (सी में MATLAB के साथ एक इंटरफ़ेस) जो यहां पाया जा सकता है । ध्यान दें कि समान FFT गणना के लिए PFFT लाइब्रेरी और समान डेवलपर्स द्वारा समान्तर गैर-समान FFTs के लिए PNFFT लाइब्रेरी भी है ।


1
जहां तक ​​मुझे पता है, पीएनएफएफटी समानांतर 3 डी गैर-वर्दी एफएफटी के लिए सबसे तेज पुस्तकालय है।
जैक पॉल्सन

PNFFT के लिए लिंक टूट गया है।
फाद

2

स्वीकृत उत्तर के अलावा। यहां ग्रीनगार्ड और ली की विधि के एक ओपन सोर्स कार्यान्वयन का लिंक दिया गया है: https://finufft.readthedocs.io/en/latest/ इसमें C, फोरट्रान, MATLAB, ऑक्टेव, और अजगर के रैपर हैं। मेरा मानना ​​है कि FINUFFT C ++ में लिखा गया है।

यह NYU कौरेंट इंस्टीट्यूट, SFU, फ्लैटिरॉन इंस्टीट्यूट (जाहिर है), टेक्सास ऑस्टिन विश्वविद्यालय और फ्लोरिडा राज्य विश्वविद्यालय में उपयोग किया जाता है। कम से कम ये वे हैं जिनके बारे में मुझे पता है।

मैं खुद एक पुराने संस्करण का उपयोग कर रहा हूं, क्योंकि मैं आलसी हूं। देखें: https://cims.nyu.edu/cmcl/nufft/nufft.html


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