MATLAB CODE
written by John Bardsley
(unless otherwise noted)
These codes come with no guarantees
(Last Modified 9/2010) Kalman Filter Algorithms. This collection of codes implements the Kalman filter, or Extended Kalman filter, on two examples -- one large-scale and linear, and another medium scale and nonlinear (Lorenz '95). We also have implemented the variations of the Kalman filter and Extended Kalman filter obtained using both CG and LBFGS for matrix inversion; and the associated variational Kalman filter, with matrix inversion and minimization obtained using CG and LBFGS. These codes were used in the three papers: 1. "Large-Scale Kalman Filtering Using the Limited Memory BFGS Method", with H. Auvinen, H. Haario, and T. Kauranne, Electronic Transactions in Numerical Analysis, Vol. 35, 2009, pp. 217--233; 2. "The variational Kalman filter and an efficient implementation using limited memory BFGS", with H. Auvinen, H. Haario, and T. Kauranne, International Journal for Numerical Methods in Fluids, 64, 3, pp. 314--335, 2010; and 3. "Krylov subspace approximate Kalman filtering", submitted with Marylesa Howard and Al Parker.
(Last Modified, 9/2010 and written in part by John Goldes) A Nonnegatively Constrained, Convex Programming Algorithm:
This is the code that was used in the papers "A Nonnnegatively Constrained Convex Programming Method for Image Reconstruction", "Total Variation-Penalized Poisson Likelihood Estimation for Ill-Posed Problems", "Tikhonov Regularized Poisson Likelihood Estimation: Theoretical Justification and a Computational Method", "An Efficient Computational Method for Total Variation with Poisson Negative-Log Likelihood", "An Analysis of Regularization by Diffusion for Ill-Posed Poisson Likelihood Estimation," "An Iterative Method for Edge-Preserving MAP Estimation when Data-Noise is Poisson", "Regularization Parameter Selection Methods for Ill-Posed Poisson Maximum Likelihood Estimation". At this point you can choose Tikhonov, total variation regularization, and diffusion regularization. Regularization parameter selection methods for the Poisson negative-log likelihood are also now available. The main algorithm is for nonnegatively constrained, regularized Poisson likelihood estimation. A number of other methods are also implemented. These include the GPCG algorithm of More' and Toreldo for large-scale bound constrained quadratic minimization, the EM algorithm, the projected gradient method, the projected Newton method and the lagged diffusivity fixed point iteration. There is a "Readme" file to guide you in the use of the codes. Only astronomical imaging examples are considered in these codes; see below for medical imaging implementation.
(Last modified in 9/2010) WMRNSD (or CPMRNSD if you like) for medical imaging examples. The medical imaging examples are computed tomography, positron emission tomography, and single photon emission computed tomography. The relative reference is: "A Nonnegatively Constrained Iterative Method with Statistically Based Stopping Rules for CT, PET, and SPECT Imaging," submitted for publication.
(Last modified in 1/2007 and written in part by Curt Vogel) Phase Diversity:
This is the code that was used in the paper by Vogel, Gilles, and myself titled "Computational Methods for a Large-Scale Inverse Problem Arising in Atmospheric Optics." It was then added to for use in the paper "An Efficient Estimation Scheme for Phase-Diversity Time Series Data," that's been published in IEEE TIP. The suite of codes contains implementations of the Limited Memory BFGS algorithm and the Steihaug Newton-CG trust region algorithm for solving a large-scale unconstrained minimization. For postprocessing, the suite contains the nonnegatively constrained methods Modified Residual Norm Steepest Descent (MRNSD), covariance preconditioned MRNSD, and Richardson-Lucy. There are README files to guide you in the use of the codes.
(Last Modified, 1/2007) Adaptive Optics:
This is the code that was used in the papers "Wavefront Reconstruction Methods for Adaptive Optics Systems on Ground-Based Telescopes" and "An Analysis of a Wavefront Reconstruction Problem Arising in Adaptive Optics". The data generation codes were created by Curt Vogel. There are README files to guide you in the use of the codes.
(Last Modified, 12/2004) A bound constrained, ellipsoidal trust region implementation of the Levenburg-Marquardt algorithm: In addition
to this algorithm, there is a "classical" implementation of
Levenburg-Marquardt. Examples using both real data from a vibrating beam and synthetic data
generated by the Harmonic Oscillator ODE,
u''+cu'+ku=0, u(t_0)=u_0 and u'(t_0)=0,
are contained within. For details read README.txt once you have downloaded and unzipped the file. This is a zip file.
(Last Modified, 5/2003) Finite Difference Time Domain (FDTD) MATLAB and Fortran-Mex codes. These codes contain MATLAB versions of all of the C code included in the text "Electromagnetic Simulation Using the FDTD Method" by D. M. Sullivan. This text is excellent for those wanting to learn about FDTD. Also contained are the codes used for the simulations in the paper: J. M. Bardsley and H. T. Banks, "Parameter Identification for a Dispersive Dielectric in 2D Electromagnetics: Forward and Inverse Methodology with Statistical Considerations," International Journal of Computational and Numerical Analysis and Applications, vol. 5, No. 1, 2004, pp. 13--49. Incorporated into these (contained in the subdirectory 2D/Inv_Prob) is a mex file that allows for the access of Fortran code for the FDTD loops. The resulting FDTD implementation is approximately 100 times faster than the full MATLAB implementation.