www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@xreglinear/RidgeMatrix.m

    function Lambda= RidgeMatrix(m);
% XREGLINEAR/RIDGEMATRIX

%  Copyright 2000-2004 The MathWorks, Inc. and Ford Global Technologies, Inc.



N= numParams(m);
if N==0
	Lambda=[];
else
	if isequal(m.lambda,0)
		Lambda= sparse(N,N);
	else
		termsin = Terms(m);
		if numel(m.lambda)==1
			lam= sqrt(m.lambda);
		else% local rols
			lam= sqrt(m.lambda(termsin));
		end
		
		switch m.qr
		case 'rols'
			B= triu(qr(m.Store.X(:,termsin),0));
			B= B(1:N,:);
			dB= diag(B);
			B = diag(1./dB)*B;
			
			Lambda= lam*B;
		otherwise
			if numel(lam)==1
				Lambda= lam*speye(N,N);
			else
				Lambda= spdiags(lam(:),0,N,N);
			end
		end
		
	end
	
end