Giter VIP home page Giter VIP logo

toolbox-for-adaptive-fourier-decomposition's Introduction

Toolbox for Adaptive Fourier Decomposition

The adaptive Fourier decomposition (AFD) is a generalization of the Fourier decomposition. It represents the given signal to a summation of mono-components that only possess non-negative analytic phase derivatives. In addition, with a matching pursuit strategy, the AFD offers fast energy decomposition via the basis adaptive to the intrinsic components of the given signal. Accordingly, the AFD has been successfully applied to the signal compression, separation, denoising and system identification.

This toolbox offers the MATLAB functions and Python functions for the core AFD and the inverse AFD. Users could input your own signals to functions directly to try the AFD method, observing the decomposition components of the AFD and developing your own applications.

For both MATLAB and Python versions, there are two kinds of implementations in this toolbox. One is the conventional AFD. The computation of the conventional AFD follows equations in "Algorithm of Adaptive Fourier Decomposition". Another one is the FFT based AFD. The objective function computation is optimized. The FFT based AFD is suggested due to its fast computation speed.

For the python version, you can find an online demo in zewang.site/AFD. This online demo shows the decomposition process of the FFT based AFD step by step. In the server side, all functions related to the AFD are from this toolbox.

For the MATLAB version, there is a GUI to show the decomposition process of the AFD as shown below:

GUI (MATLAB Version)

Installation

MATLAB Version

For MATLAB users, you only need to

  1. Download this toolbox
  2. Add the "Matlab" folder to your MATLAB searching path. For example, if your MATLAB folder path is D:\Github\Toolbox-for-Adaptive-Fourier-Decomposition\Matlab, you can use the following command in MATLAB: addpath('D:\Github\Toolbox-for-Adaptive-Fourier-Decomposition\Matlab')

Python Version

For Python users, the following packages are required:

After you have successfully downloaded and installed the above required packages, you only need to

  1. Download this toolbox
  2. Copy the AFD.py file in the Python folder to the Python searching path, like your own program root path.
  3. In your own python program, you have to import functions in AFD.py. For example, you can use from AFD import *.

Examples

For MATLAB users, in Matlab/Example folder, you can run AFD_Example.m to try the AFD.

For Python users, in Python folder, you can directly run AFD.py to try the AFD.

Key Functions

  • Conventional AFD: conv_AFD (MATLAB and Python Versions)

    This function computes a_n and coefficients of decomposition components <e_{a_n},G_n> of the AFD following equations in "Algorithm of Adaptive Fourier Decomposition".

  • FFT based AFD: FFT_AFD (MATLAB and Python Versions)

    This function computes a_n and coefficients of decomposition components <e_{a_n},G_n> of the AFD using the FFT for the computation of objective function values.

  • Inverse AFD: inverse_AFD (MATLAB and Python Versions)

    This function computes the recovery signal using a_n and coefficients of decomposition components <e_{a_n},G_n> obtained from conv_AFD and FFT_AFD.

  • Components of the AFD: comp_AFD (MATLAB Version) and component_AFD (Python Version)

    This function computes evaluators e_{a_n}, basis B_n and decomposition components F_n

  • GUI of the AFD: GUI_AFD (MATLAB Version)

    Use the GUI to show the decomposition process of the AFD.

References and Related Papers

Mathematical Fundation

Applications

toolbox-for-adaptive-fourier-decomposition's People

Contributors

pikipity avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.