www.gusucode.com > mbcdesign 工具箱 matlab 源码程序 > mbcdesign/@cset_stratlattice/cset_stratlattice.m
function obj=cset_stratlattice(varargin) % CSET_STRATLATTICE Stratified Lattice CandidateSet generator object % % OBJ=CSET_STRATLATTICE % OBJ=CSET_STRATLATTICE(CS) % OBJ=CSET_STRATLATTICE(STRUCT) % OBJ=CSET_STRATLATTICE(OPTS) % OBJ=CSET_STRATLATTICE(CS,OPTS) % % Where OPTS={{LIMITS},g,Nlevels,N}; % Copyright 2000-2004 The MathWorks, Inc. and Ford Global Technologies, Inc. if nargin==2 cs= varargin{1}; lims= cat(1,varargin{2}{1}{:}); cs= limits(cs,lims); obj.g= varargin{2}{2}; obj.Nlevels= varargin{2}{3}; obj.N= varargin{2}{4}; obj=doRealGCalc(obj); elseif nargin==1 if isa(varargin{1},'candidateset') cs= varargin{1}; obj.g= i_createg(nfactors(cs),10000); obj.Nlevels= zeros(size(obj.g)); obj.Nlevels(end)=3; obj.N= 10000; obj=doRealGCalc(obj); elseif isa(varargin{1},'struct') cs= varargin{1}.candidateset; cs= rmfield(cs,'candidateset'); else lims= cat(1,varargin{1}{1}{:}); cs= candidateset(lims); obj.g= varargin{1}{2}; obj.Nlevels= varargin{1}{3}; obj.N= varargin{1}{4}; obj=doRealGCalc(obj); end else cs= candidateset(repmat([-1 1],4,1)); obj.g= i_createg(4,10000); obj.Nlevels= zeros(size(obj.g)); obj.Nlevels(end)=3; obj.N= 10000; obj.RealG=obj.g; obj.RealG(end)=10000/3; obj.ScaleFudge=[1 1 1 obj.RealG(end)]; end obj.version=1; obj=class(obj,'cset_stratlattice',cs); return function g=i_createg(nf, N) % create a vector of primes, g, all less than N and preferably different g=primes(max(N/50,30)); g=g(5:end); if length(g)<nf g=g(floor(rand(1,nf)*(length(g)))+1); else g=g(randperm(length(g))); g=g(1:nf); end return