A matlab lexer / parser based on ANTLR with MEX bindings that let you examine
and manipulate the parse tree within matlab itself.
General prioritized solver (GPS) v1.1
A massively parallel value iteration engine which implements
prioritization and partitioning. Includes code to generate MDPs from
different continuous control problems such as mountain car and
Double-arm pendulum simulator
A double-arm pendulum simulator written in wxWindows.
Making movies with Geomview
Introductory Papers / References I've Found Useful
Petersen's excellent matrix cookbook
Wallach's intro to conditional random fields
MacKay's intro to MCMC
Walsh's intro to MCMC and Gibbs sampling
Shewchuk's intro to conjugate gradients (without the agonizing pain!)
Edelman's optimization on the Stiefel/Grassman manifolds
von Luxburg's tutorial on spectral clustering
Roth's survey of appearance-based methods for object recognition
Schake's properties of the Kronecker product
The AMS Latex Users Guide
Incremental SVD updates
Given the thin SVD of a matrix (X=USV'), update it in a number of
interesting ways, while preserving the rank of the result.
Recursive least squares
svd_update.m - update the SVD to be
[X + A'*B]=Up*Sp*Vp' (a general matrix update).
update the SVD to be [X A] = Up*Sp*Vp' (add columns [ie, new data
update the SVD to be [X + a*b'] = Up*Sp*Vp' (that is, a general
rank-one update. This can be used to add columns, zero columns,
change columns, recenter the matrix, etc. ).
See Matthew Brand, "Fast low-rank modifications of the
thin singular value decomposition".
rls.m - Basic recursive least squares.
Kernel Recursive Least Squares
qr_rls.m - Square-root version of RLS using a QR decomposition.
bqr_rls.m - Block square-root version
of RLS using a QR decomposition (you can add multiple rows at a time).
dict_init.m - Part of the dictionary
implementation used by KRLS algorithm. Can stand alone.
Mutual information based on quadratic entropies
dict.m - Part of the dictionary
implementation used by the KRLS algorithm. Can stand alone.
krls_init.m - Kernel recursive least squares initializer.
krls.m - Main KRLS function. Repeatedly called with new data points.
krls_query.m - Query the resulting estimator.
krls_example.m - An example script showing the different parts.
Here are scripts for computing mutual information based on quadratic
Renyi and Tsallis entropies, when the PDFs are assumed to be based on
a kernel density estimate with a Gaussian kernel. The fast versions
use Nystrom approximations to speed things up. Requires the rbf4.m
Fast Gaussian kernel evaluations
Very fast versions of Gaussian kernel evaluations. There are four
versions: the first uses spherical covariances, the second is like the
first but without a normalizer, the third uses a full covariance
matrix (no normalizer), and the fourth uses a (non-uniform) diagonal
covariance matrix (no normalizer).
Given a matrix A (of size m1*m2, n1*n2), find its optimal kronecker
decomposition (that is, find matrices B,C which minimize
norm( A - kron(B,C), 'fro' )**2 ).
See Van Loan and Pitsianis, "Approximation with Kronecker Products."
Reduced rank regression. Solves
the system of equations X*A = B, subject to rank(X)=k. (Nick Firoozye
points out that this method is not exactly the maximum likelihood
method. Unfortunately, I can't remember where I obtained this method. Nick has contributed an alternative RRR script below, which is a more faithful implementation.)
Nick Firoozye's reduced rank regression.
Convert the parameters of a linear dynamical system to the parameters
of a predictive linear gaussian model. See Rudary, Singh and Wingate,
"Predictive Linear-Gaussian Models of Stochastic Dynamical Systems."
Fast version of kernel PCA.
Fast version of PCA.
Subsample the columns of a matrix.
Fast Mahalanobis distance evaluator.
Scripts for dealing with MDPs and MTX (Matrix Market) graph files,
mostly with an eye to massaging them into a format suitable for
partitioning by METIS.