.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "11_demos\python_packages\numpy\demo_NpFFT_PyFFTW.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_11_demos_python_packages_numpy_demo_NpFFT_PyFFTW.py: Numpy FFT, PyFFTW ==================== This example shows how to use the FFT or IFFT from ``Numpy``. If possible the package PyFFTW is searched. If it is available, the fast implementation of FFT and IFFT is used from this package (GPL license!!!). In order to have the fast version of the fourier transform in ``pyfftw``, align your input data using ``getAlignNdArray``. This is an idle operation if PyFFTW is not available. Either ``np.fft.fft2`` or ``pyfftw.interfaces.numpy_fft.fft2`` are mapped to ``myfft2``, such the overall call can be done by using ``myfft2(...)``. The same holds for ``myifft2(...)``. .. GENERATED FROM PYTHON SOURCE LINES 13-19 .. code-block:: Python import numpy as np myfft2 = np.fft.fft2 # default: fft2 from numpy myifft2 = np.fft.ifft2 # default: ifft2 from numpy .. GENERATED FROM PYTHON SOURCE LINES 21-22 Define function and overwrite it when ``pyfftw`` is available. .. GENERATED FROM PYTHON SOURCE LINES 22-47 .. code-block:: Python def getAlignNdArray(image): return np.array(image) try: import pyfftw myfft2 = pyfftw.interfaces.numpy_fft.fft2 # if PyFFTW: use fft2 from this package myifft2 = pyfftw.interfaces.numpy_fft.ifft2 alignSize = pyfftw.simd_alignment def getAlignNdArray(image): return pyfftw.n_byte_align(np.array(image), alignSize) except ModuleNotFoundError: print("pyfftw could not be found. Numpy fft is used instead") image = np.random.randn(1024, 512) I = getAlignNdArray(image) I1 = myfft2(I) I2 = myifft2(I) I2 .. rst-class:: sphx-glr-script-out .. code-block:: none pyfftw could not be found. Numpy fft is used instead array([[-4.41454107e-04+0.00000000e+00j, -2.51629340e-04-6.22621070e-04j, -5.24166091e-04-8.69670371e-04j, ..., -9.68750785e-04-1.40335374e-03j, -5.24166091e-04+8.69670371e-04j, -2.51629340e-04+6.22621070e-04j], [-1.37564520e-03-5.02280564e-04j, -3.16131226e-04-3.83928675e-04j, -2.64524355e-03+1.21308171e-03j, ..., 6.43585986e-04+4.19576266e-04j, -5.99395508e-04+3.66520961e-04j, 6.92728343e-04+4.41714402e-04j], [-1.00728360e-03+6.71349255e-04j, -2.00100703e-03-3.09363704e-04j, -8.92034028e-04-9.69901790e-05j, ..., 8.30072838e-05+8.28516470e-04j, -3.14040628e-04-9.99640259e-04j, 3.96885141e-04+1.28553377e-04j], ..., [-1.39918521e-03+1.49365727e-03j, 1.28884982e-03-2.33037098e-04j, 7.99750333e-04+1.03343398e-03j, ..., 1.55898393e-03+2.42627676e-03j, -4.51848616e-04+3.83616458e-04j, 4.70787993e-04-9.90595756e-05j], [-1.00728360e-03-6.71349255e-04j, 3.96885141e-04-1.28553377e-04j, -3.14040628e-04+9.99640259e-04j, ..., 3.99798804e-04-6.90250285e-04j, -8.92034028e-04+9.69901790e-05j, -2.00100703e-03+3.09363704e-04j], [-1.37564520e-03+5.02280564e-04j, 6.92728343e-04-4.41714402e-04j, -5.99395508e-04-3.66520961e-04j, ..., -8.33580524e-05+1.38016544e-03j, -2.64524355e-03-1.21308171e-03j, -3.16131226e-04+3.83928675e-04j]]) .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.032 seconds) .. _sphx_glr_download_11_demos_python_packages_numpy_demo_NpFFT_PyFFTW.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: demo_NpFFT_PyFFTW.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: demo_NpFFT_PyFFTW.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: demo_NpFFT_PyFFTW.zip `