Code
This page contains an overview of general purpose code I have developed. If you are searching for code related to a specific paper, you may consult the publications page.
CIlib
The CIlib library is a large collection of scripts and functions related to compressive sensing and image reconstruction tasks in general. It has been developed in relation to the book Compressive Imaging: Structure, Sampling, Learning (Cambridge University Press) by B. Adcock and A. C. Hansen.
- Language: Matlab
- Code: https://github.com/vegarant/cilib
fastwht
The fastwht library is a very fast (CPU) implementation of the fast Walsh-Hadamard transform. At the computational core it uses the fxt library. The library is interfaced with Matlab and Python, providing (1) a substantially faster implementation of the fwht
function in Matlab and (2) an implementation of the Walsh-Hadamard transform in Python. It also includes an interface for the sequency ordered Walsh function.
- Languages: C/C++, Matlab and Python
- Code: https://github.com/vegarant/fastwht
Continuous Walsh sampling and wavelet reconstruction
In many real-world problems, the samples one acquire are better modeled using continuous integral transforms, rather than discrete measurements. Not taking this into account in the reconstruction process typically leads to noticeable artefacts in the reconstructed signals (functions). This code takes the infinite dimensionality of continuous Walsh sampling and wavelet reconstruction into account and computes a vector-matrix multiplication between a finite section of the change of basis matrix in FFT-time. Note that this is not the same as a naive call fwht
and wavedec
functions in Matlab.
- Language: Matlab
- Code: https://github.com/vegarant/cww
WL - General purpose wavelet library
The WL library is a full-blown wavelet library which, despite being written in pure Matlab and Python, is almost comparable in speed with Matlab's wavelet toolbox and PyWavelets. It is the only library, (which I know of) which fully supports boundary adapted wavelets for both orthogonal and biorthogonal wavelets. Moreover, it can compute this for vectors with arbitrary lengths. This library is a fork from Øyvind Ryan's wavelet library applinalg, developed for the book Linear Algebra, Signal Processing, and Wavelets - A Unified Approach. The extension supporting boundary wavelets on the interval is written by Øyvind and me.- Languages: Matlab and Python
- Code: https://github.com/oyvindry/wl
spgl1
spgl1 is a widely used optimization algorithm for solving \[ \text{minimize}_{z \in \mathbb{C}^{N}} \| z\|_1 \quad\text{ subject to }\quad \|Az - b\|_2 \leq \epsilon \] This is a reimplementation of the spgl1 algorithm done in C++ rather than Matlab. It also includes a very slow implementation of a wavelet transform. This project was developed while writing my master thesis (2016), and have not been modified since that time.
- Language: C++
- Code: https://bitbucket.org/vegarant/spgl1/