*************************************************************** * This is Version 3.2 of Regularization Tools for Matlab 6.0 * *-------------------------------------------------------------* * Per Christian Hansen, IMM * *************************************************************** Revisions in Version 1.1 07/14/92 Fixed a bug in l_curve (beta2 was not computed correct). Fixed the same bug in gcv and lagrange. Fixed a bug in mtsvd (beta was never computed). 09/11/92 Fixed a typo in l_curve. Added more pause statements in regudemo as a courtesy to PC users. Revisions in Version 1.2 09/17/92 Fixed non-standard use of zeros and ones. Added more comments to the test problems. Revisions in Version 1.3 11/05/92 Changed routines cg and pcg, based on an algorithm from Louis's book, to routines cgls and pcgls based on an algorithm from Bjorck's book. 02/09/93 New subroutine names: changed cg, pcg, and tls to cgls, pcgls, and ttls. 02/26/93 Minor bug in fil_fac corrected. 03/12/93: Fixed minor bug in plot_lc. 03/16/93: Added H1 lines to all routines. Renamed squire to foxgood. Routine ttls now computes the correct TLS residual. Hold state is now restored after all plots. Error messages in l_corner and l_curve if Spline Toolbox is not available. 04/21/93: Modified gen_form and std_form. 05/26/93: Modified input chech in lanc_b, lsqr, and plsqr. Changed to sparse storage of L. 06/12/93: Fixed bug in gen_form for square L_p. 06/23/93: Added ttls filter factors to fil_fac. 10/29/93: Added 10 dummy subroutines for the case when Spline Toolbox is not installed. --------------------------------------------------------------------- | Changes after Regu Tools 2.0 has appeared in NumerAlgo. | --------------------------------------------------------------------- 02/01/94: Fixed bug in cgls (s -> s2). 08/03/94: Expanded stopping criterion in newton. 08/09/94: Revised comment lines in maxent. 10/07/94: Removed superfluorus statements in mtsvd. 11/01/94: Modified get_l slightly such that the sign of L*x is correct. 02/09/95: Revised qr in csd, l_curve and mtsvd to compute "economy size" decomposition. Renamed csd to csdecomp (csd is now a function in the Signal Proc. Toolbox). Revised gsvd to call csdecomp. 11/08/95: Fixed bug in csdecomp when p=1. 03/22/96: Changed tsvd and tgsvd to allow k=0. 10/08/96: Changed tgsvd to allow a square L. 10/22/96: Changed tikhonov to allow a square L. 04/17/97: Replaced (..==NaN) with isnan(..) in bsvd. Added initialization of U2t in csdecomp. 04/21/97: Changed variable name "case" to "example" in deriv2. Changed meshdom to meshgrid in spikes, and deleted the flipud command. Changed variable xi to eta in picard. 06/30/97: Removed function bsvd (obsolete with sparse format of bidiagonal matrices). Changed to sparse format of bidiagonal matrix in bidiag. Changed to sparse format of bidiagonal matrix in lanc_b. Added function regutm. 07/02/97: Added reorthogonalization of normal eq. residual vectors to cgls and pcgls. Fixed bug in pcgls when computing filter factors. 07/29/97: Changed variable name in pinit. Modified lsolve, ltsolve, and std_form according to simpler formulas. 09/18/97: Added blur test problem. Deleted mgs, and included the MGS process in get_l. 11/11/97: Modified gen_hh to compensate for Matlab's signum function. 12/22/97: Replaced gsvd with cgsvd, and deleted csdecomp. Added more output arguments to dsvd, mtsvd, tgsvd, tikhonov, and tsvd. Added method = 'ttls' to fil_fac. Improved the plots in gcv, lagrange, picard, plot_lc, and quasiopt. Added input parameter x_0 to tikhonov. 12/29/97: Added call to fmin in gcv, l_curve, and quasiopt. Corrected bugs in discrep and lsqi. Modified heb_new and newton to work with lambda instead of lambda squared. 02/05/98: Added d==0 to get_l. 04/16/98: Modified l_corner and spleval to be consistent with Spline Toolbox v. 2.0. --------------------------------------------------------------------- | Changes after Regu Tools 3.0 has appeared in NumerAlgo. | --------------------------------------------------------------------- 04/30/99: Fixed bug in l_corner (nargin==8). 02/21/01, compatibility changes to Matlab 6: Changed fmin to fminbnd in gcv, l_corner and quasiopt. Changed gcv, lagrange, lcfun, l_curve and plot_lc to work correct for complex problems. Changed the use of exist in l_corner and l_curve. Renamed lsqr and plsqr to lsqr_b and plsqr_b, respectively. Changed regudemo accordingly. 04/08/01: Changed A'*v to (v'*A)' in cgls, lanc_b, lsqr_b, nu, pcgls, plsqr_b, pnu. 09/13/01: Corrected help lines in heat and l_curve. Removed option reorth=2 in lsqr_b and plsqr_b. Changed bidiag, gen_hh, lanc_b, lsqr_b and plsqr_b to work correct for complex problems. 12/12/02: Fixed bug in l_corner (for m>n and p