Matlab Code by Mark Schmidt


This package contains the most recent version of various Matlab codes I wrote during my PhD and postdocs. I would recommend downloading and using this package if you plan on using more than one of my Matlab codes. This is because this package includes all the more recent bug-fixes and efficiency-improvements, while in making this package I have updated my old code to make it compatible with the new code and newer versions of Matlab. Further, I typically do not update the individual packages unless I am making a major change (such as the updates of minFunc and UGM).

The particular packages included (from oldest to newest) are:


Each of the packages includes one or more demos that show how to use the code. Below is a list of all the available demos (the ones highlighted in blue consist of a single function that contains a series of demos):

minFunc lasso blogreg DAGlearn L1precision L1General minConf minFunc_examples.m UGM L1GeneralGroup UGMlearn crfChain L1General_examples.m PQN_examples.m thesis alphaBeta batching prettyPlot TMP_examples.m QNST_examples.m SAG SAG4CRF minFunc_extras


April 2023: Added minFunc_extras, which contains some old optimization development codes in case anyone finds them useful: June 2022: March 2022:

Updates to minFunc (these were made at earlier dates, but were not previously mentioned here):

Updates to minConf (these were made at earlier dates, but were not previously mentioned here):

September 2020: May 2020: July 2019: June 2019: September 2013: November 2012: July, 2012: April, 2012: March, 2012: February, 2012: January, 2012: November, 2011: August, 2011: March 2011:


To get the complete set of most recent Matlab .m and .mex files, download

Note that some of these packages use Matlab's optimization and/or statistics toolbox (they will say that functions like 'quadprog' or 'exprnd' are not found if these toolboxes are present). To use the UGMep code (and substantially speed up the methods based on graph-cuts in UGM), you will need to have the mex wrapper to the maxflow code.

To add all folders in the zip file to the Matlab path, extract the contents of the zip file and then (in Matlab) type 'addpath(genpath(markSchmidt_dir))', where 'markSchmidt_dir' is the location of the extracted directory.

I have included compiled mex files for several operating systems, but if they are not included for your operating system then you will get an error that looks like: ??? Undefined function or method 'UGM_Decode_ExactC'. To compile most of the mex files for your operating system, run mexAll. This functions tries to compile all files except those associated with the crfChain code.

To compile the mex files associated with the crfChain code on Linux, run mexCrfChain. In order to compile the crfChain mex files on Windows, you can use MinGW and Gnumex. For compiling on Macs, you need to install Xcode.

Mark Schmidt > Software > Current Versions