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

    function u= localusermod(param,nf)
% USERLOCAL userdefined local model
% 
%    L3 = localusermod(param)
%
%      Parents - model
%              - localmod
%

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


u.version=3;
if nargin==0
   param= xregusermod;
end
if isa(param,'localusermod')
   u=param;
   return
end   
if isstruct(param)
	param.version= u.version;
	[u,LocMod,m]= i_Update(param);
elseif nargin==2 && strcmp(param,'nfactors')
    % L = localusermod('nfactors',nf)
	cfglist=getmodellist(xregusermod,nf);
    if isempty(cfglist)
        error(message('mbc:localbspline:InvalidValue1', nf))
    end
     u.userdefined= xregusermod('name',cfglist{1});
     m = xregmodel('nfactors',nf);
     LocMod= localmod;
else
	if isa(param,'xregmodel')
		u.userdefined = param;
	else
		u.userdefined= xregusermod('name',param);
	end
	nf= nfactors(u.userdefined);
   m = xregmodel('nfactors',nf);
   LocMod= localmod;
end

u=class(u,'localusermod',LocMod,m);

if numfeats(u)==0
   np= numParams(u.userdefined);
   u=AddFeat(u,zeros(np,nfactors(u)),1:np);
end
   


function [u,LocMod,m]= i_Update(u)

if ~isfield(u,'localmod')
	LocMod= localmod;
else
	LocMod= localmod(u.localmod);
	u= mv_rmfield(u,'localmod');
end
if ~isfield(u,'model')
	m = model;
else
	m = model(u.model);
	u= mv_rmfield(u,'model');
end