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

    function U= xregusermod(varargin)
%XREGUSERMOD Constructor for user-defined model
%
%  MDL = XREGUSERMOD('name',NM) creates a user-defined model object, MDL,
%  with the name NM.
%
%  Example usage:
%
%    m = xregusermod('name','weibul');
%

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



if nargin==1 && isa(varargin{1},'xregusermod')
   U = varargin{1};
   return
end
if nargin==1 && isstruct(varargin{1})
    U = varargin{1};
    m = U.xregmodel;
    U.ThrowError = false;
    U = rmfield(U,'xregmodel');
    U= class(U,'xregusermod',m);
else
    funcName= 'functemplate';
    nf=1;
    n= 2;
    if nargin>=2
        for i=1:2:nargin-1
            switch lower(varargin{i})
                case {'funcname','name'}
                    funcName = varargin{i+1};
                case 'nfactors'
                    nf= varargin{i+1};
                    [list, f] = getmodellist(xregusermod, nf);
                    if isempty(list)
                        error(message('mbc:xregtransient:InvalidModel1', nf));
                    else
                        funcName = list{1};
                    end
            end %%switch
        end %% loop for each pair of argin
    end


    if ischar(funcName)
        funcName= str2func(funcName);
    end
    U.funcName= funcName;
    U.parameters= zeros(n,1);

    U.fitOpts= [];
    U.ThrowError = false;

    m= xregmodel('nfactors',nf);
    U= class(U,'xregusermod',m);
    if ~strcmp(name(U),'functemplate')
        U = funcinit(U,name(U));
    end
end