www.gusucode.com > mbcdesign 工具箱 matlab 源码程序 > mbcdesign/@cset_grdlatt/cset_grdlatt.m
function obj=cset_grdlatt(varargin) % CSET_GRDLATT Grid/Lattice CandidateSet generator object % % OBJ=CSET_GRDLATT % OBJ=CSET_GRDLATT(CS) % OBJ=CSET_GRDLATT(STRUCT) % OBJ=CSET_GRDLATT(OPTS) % OBJ=CSET_GRDLATT(CS,OPTS) % % Where OPTS={{GRIDDIMS,LATDIMS},GRID_LEVELS,LATT_LIMS,g,N}; % Copyright 2000-2004 The MathWorks, Inc. and Ford Global Technologies, Inc. if nargin==2 cs=varargin{1}; obj.griddims=varargin{2}{1}{1}; obj.lattdims=varargin{2}{1}{2}; obj.grid=cset_grid(varargin{2}{2}); obj.lattice=cset_lattice(varargin{2}(3:5)); lims=zeros(length(obj.griddims)+length(obj.lattdims),2); lims(obj.griddims,:)=limits(obj.grid); lims(obj.lattdims,:)=limits(obj.lattice); cs=limits(cs,lims); elseif nargin==1 if isa(varargin{1},'candidateset') cs=varargin{1}; nf=nfactors(cs); obj.griddims=nf; obj.lattdims=1:(nf-1); lims=limits(cs,nf); obj.grid=cset_grid({linspace(lims(1),lims(2),3)}); obj.lattice=cset_lattice({num2cell(limits(cs,(1:(nf-1))'),2)', i_createg((nf-1),10000), 10000}); elseif isa(varargin{1},'struct') cs=varargin{1}.candidateset; cs=rmfield(cs,'candidateset'); else obj.griddims=varargin{1}{1}{1}; obj.lattdims=varargin{1}{1}{2}; obj.grid=cset_grid(varargin{1}{2}); obj.lattice=cset_lattice(varargin{1}(3:5)); lims=zeros(length(obj.griddims)+length(obj.lattdims),2); lims(obj.griddims,:)=limits(obj.grid); lims(obj.lattdims,:)=limits(obj.lattice); cs=candidateset(lims); end else cs=candidateset(repmat([-1 1],4,1)); obj.griddims=4; obj.lattdims=(1:3); obj.grid=cset_grid({(-1:1)}); obj.lattice=cset_lattice({{[-1 1],[-1 1],[-1 1]}, i_createg(3,10000), 10000}); end obj.version=1; obj=class(obj,'cset_grdlatt',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