Skip to content

The codebase for the Graph Fractional Fourier Transform: A Unified Theory.

License

Notifications You must be signed in to change notification settings

koc-lab/gfrft-unified

Repository files navigation

Graph Fractional Fourier Transform: A Unified Theory - Experiments

MATLAB Styling, Metrics & Linting by miss_hit License

This repository contains the source code and will serve as documentation for the Graph Fractional Fourier Transform: A Unified Theory paper published in IEEE Transactions on Signal Processing. The trainable graph fractional Fourier transform is provided as a standalone installable package on its own GitHub Page: tunakasif/torch-gfrft.

Table of Contents

Dependencies

  1. EPFL's Graph Signal Processing Toolbox (gspbox): see GitHub and documentation pages.

    • The project assumes the gspbox directory is present in the root of the project and compiled according to the directives presented in the documentation.

    • If you already have a way to include gspbox in your path, then you can ignore this. However, if you want to download the code with its gspbox dependency, you need to use --recursive option while cloning, e.g.,

      git clone --recursive https://github.com/koc-lab/gfrft-unified.git

      or with GitHub CLI,

      gh repo clone koc-lab/gfrft-unified -- --recursive
  2. CVX, which is MATLAB Software for Disciplined Convex Programming: see GitHub and documentation pages.

    • The CVX library is needed by the graph-arma component of the codebase, which is an implementation of the Autoregressive Moving Average Graph Filtering paper (published in IEEE Transactions on Signal Processing Volume: 65, Issue: 2, 15 January 2017), and it is based on the provided source code by Andreas Loukas on his blog. CVX library needs to be installed in order to design ARMA graph filters, so you do not need it if you are not going to use graph-arma codes.
    • The best way to obtain CVX is to visit the download page, which provides pre-built archives containing standard and professional versions of CVX tailored for specific operating systems. That is why CVX is not added as a submodule like gspbox. They advise not to manually add it to the path and use a setup script, hence it does not matter where you place the library other than some given restrictions (see documentation).

Installation

  1. Clone the repository

    • If you want the gspbox as a submodule, clone recursively (see Dependencies section).
  2. Install gspbox dependency by entering gspbox directory in the MATLAB prompt and running the following command (see the documentation for further details):

    gsp_start; gsp_make; gsp_install;
  3. Install CVX dependency by installing the pre-built archive for your operating system and extracting it. Then, by entering cvx directory in the MATLAB prompt, run the following command, and do not try to manually add the directory to the path (see the documentation for further details):

    cvx_setup

Usage

First, run the Initialize.m script to resolve the paths of all files and import them for utilization.

>>> Initialize
Successfully initialized GFRFT Unified Project by Tuna Alikaşifoğlu.

Warning

The gspbox's unlockbox addition overrides snr.m of the signal toolbox. For an original signal x and same size noise n, the original SNR is calculated with snr(x, n), with the unlockbox addition, it is calculated with snr(x, x + n). To provide consistency custom Snr.m is provided to calculate in the calling convention of Snr(x, x + n), but the calculation style of default MATLAB implementation, whether unlockbox is imported or not, utilizes the convention of unlockbox.

About

The codebase for the Graph Fractional Fourier Transform: A Unified Theory.

Topics

Resources

License

Stars

Watchers

Forks