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

    function obj=cset_lattice(varargin)
% CSET_LATTICE  Lattice CandidateSet generator object
%
%  OBJ=CSET_LATTICE
%  OBJ=CSET_LATTICE(CS)
%  OBJ=CSET_LATTICE(STRUCT)
%  OBJ=CSET_LATTICE(OPTS)
%  OBJ=CSET_LATTICE(CS,OPTS)
%
%   Where OPTS={{LIMITS},g,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.N= varargin{2}{3};
elseif nargin==1
    if isa(varargin{1},'candidateset')
        cs= varargin{1};
        obj.g= i_createg(nfactors(cs),10000);
        obj.N= 10000;
    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.N= varargin{1}{3};
    end
else
    cs= candidateset(repmat([-1 1],4,1));
    obj.g= i_createg(4,10000);
    obj.N= 10000;
end

obj.version=1;
obj=class(obj,'cset_lattice',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