The non-equidistant fast Fourier transform (NFFT) is an extension of the famous fast Fourier transform (FFT), which can be applied to non-equidistantly sampled data in time/space or frequency domain. It is an approximative algorithm that allows to control the approximation error in such a way that machine precision is reached while keeping the algorithmic complexity in the same order as a regular FFT. The NFFT plays a major role in many signal processing applications and has been intensively studied from a theoretical and computational perspective. The fastest CPU implementations of the NFFT are implemented in the low-level programming languages C and C++ and require a compromise between code generalizability, code readability, and code efficiency. The programming language Julia promises new opportunities in optimizing these three conflicting goals. In this work we show that Julia indeed allows to develop an NFFT implementation, which is completely generic, dimension-agnostic and requires about 2-3 times less code than other famous libraries while still being one of the fastest NFFT implementations developed to date.
翻译:非偏僻快速Fourier变异(NFFFT)是著名的快速Fourier变异(FFT)的延伸,可以适用于非偏僻抽样数据的时间/空间或频率域。它是一种近似算法,可以控制近似误差,从而达到机器精确度,同时将算法的复杂性与常规FFFT保持同一顺序。NFT在许多信号处理应用程序中起着重要作用,并从理论和计算角度进行了深入研究。NFFT的快速CPU实施速度在低级别编程语言C和C++中实施,需要在代码的通用性、代码可读性和代码效率之间达成妥协。编程语言Julia承诺在优化这三个相互矛盾的目标方面有新的机会。在这项工作中,我们表明Julia确实允许开发NFFT的实施,这是完全通用的、多维的,需要比其他著名的图书馆少约2-3倍的代码,同时仍然是迄今发展得最快的NFFT执行速度之一。