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.

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.

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.

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.

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.