Performs a More-Hebden Levenberg-Marquardt optimization


x = lmmore('func',xinit,lb,ub,options,arg2,...)

[x,resnorm,residual,exitflag,output,lambda,jacobian] = lmmore('func',xinit,lb,ub,options,arg2,...)


This function is a More-Hebden implementation of the Levenberg-Marquardt nonlinear least-squares optimization algorithm. The function is interface-compatible with the lsqnonlin-function from the MATLAB 6 Optimization Toolbox.


'func' is the cost-function that is to be used.

xinit is the parameter-vector's starting point in the non-linear optimization.

lb is the lower-bound on the parameters. This value is not used.

ub is the upper-bound on the parameters. This value is not used.

options is a MATLAB 6 compatible optimset-structure that contains options for the optimization algorithm [1]. In addition, a number of extra fields may be present. See the Remarks section below for more information.

arg2 will be passed as second argument to the cost-function 'func'. Arguments 3 to N may be appended after arg2.


x is the result of the optimization. The solution x is guaranteed to have an equal or smaller cost than xinit.

All other parameters are compatible with the MATLAB 6 lsqnonlin function.


The interface to lmmore has been made compatible with the lsqnonlin optimization function in the MATLAB 6 Optimization Toolbox. Note that although a lower and upper bound are given (consistent with lsqnonlin's interface), they are not used internally.

This optimization implementation supports overparametrized cost-functions. If options.Manifold (not part of optimset's normal structure) is passed and set to 'on', lmmore expects the cost- function to be able to return three arguments: an error-vector EN, a Jacobian PsiN U2 and a projection matrix U2. The columns of this matrix U2 must form an orthonormal basis of the subspace in which the cost-function does not change because of over-parametrization.

This optimization implementation supports cost-functions that return the R-factor of the (projected) Jacobian PsiN and the error-vector EN:

$$[ \Psi_N \; E_N ] = Q R$$

$$[ \Psi_N U_2 \; E_N ] = Q R$$

Cost-functions may use this functionality, e.g. to build up the R-factor in such a way that less memory is required. In order to use this feature with costfunctions that support it, the field options.RFactor should be set to 'on'.


This function implements a More-Hebden trust-region based Levenberg-Marquardt optimization according to [2,3].

In addition, this function supports projected gradients according to [4,5].

Used By

doptlti, foptlti

Uses Functions

dfunlti, ffunlti

See Also

lsqnonlin, optimset


[1] The MathWorks Inc., Natick, Massachusetts, Optimization Toolbox User's Guide, version 2.1 (release 12) ed., Sept 2000.

[2] J. E. Dennis and R. B. Schnabel, Numerical Methods for Unconstrained Optimization and Nonlinear Equations. New Jersey: Prentice-Hall, 1982.

[3] J. J. More, "The Levenberg-Marquardt algorithm: Implemnetation and theory", in Numerical Analysis (G. A. Watson, ed.), vol. 630 of _Lecture Notes in Mathematics, pp. 106-116, Springer Verlag, 1978.

[4] N. Bergboer, V. Verdult, and M. Verhaegen, "An effcient implementation of maximum likelihood identification of LTI state-space models by local gradient search", in Proceedings of the 41st IEEE Conference on Decision and Control, Las Vegas, Nevada, Dec. 2002.

[5] L.H. Lee and K. Poolla, "Identification of linear parameter varying systems using nonlinear programming", Journal of Dynamic Systems, Measurement and Control, col. 121, pp. 71-78, Mar 1999.