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

    function obj=cset_lhs(varargin)
% CSET_LHS  Lattice CandidateSet generator object
%
%  OBJ=CSET_LHS
%  OBJ=CSET_LHS(CS)
%  OBJ=CSET_LHS(STRUCT)
%  OBJ=CSET_LHS(OPTS)
%  OBJ=CSET_LHS(CS,OPTS)
%  OBJ=CSET_LHS(CS,OPTS,INDICES)
%
%   Where OPTS={{LIMITS},N,CHOICEMETHOD,OPTIMMETHOD,RECALC};

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


if nargin==1
    if isa(varargin{1},'candidateset')
        % Base candidateset provided
        cs = varargin{1};
        obj = iDefaultStruct(cs);
    elseif isstruct(varargin{1})
        % Call from loadobj
        cs = varargin{1}.candidateset;
        obj = rmfield(varargin{1},'candidateset');
    else
        % Cell array of input options
        lims= cat(1,varargin{1}{1}{:});
        cs = candidateset(lims);
        obj = iDefaultStruct(cs);
        obj = iSetInputArgs(obj, varargin{1}{2:5});
    end
    
elseif nargin==2
    % Candidate set and options
    cs = varargin{1};
    lims = cat(1,varargin{2}{1}{:});
    cs = limits(cs,lims);
    obj = iDefaultStruct(cs);
    obj = iSetInputArgs(obj, varargin{2}{2:5});

elseif nargin==3
    % additional input - for upgrading from old designs
    lims = cat(1,varargin{2}{1}{:});
    cs= candidateset(lims);
    obj = iDefaultStruct(cs);
    obj = iSetInputArgs(obj, varargin{2}{2:5});
    obj.indices = varargin{3};

else
    % No inputs - use defaults
    cs = candidateset(repmat([-1 1],4,1));
    obj = iDefaultStruct(cs);
end

obj.version = 3;
obj = class(obj, 'cset_lhs', cs);

obj = pGeneratePoints(obj);



function s = iDefaultStruct(cs)
% Create a structure with default values for the object
s.N = 100;
s.alg = 'cdfvariance';
s.indices = [];
s.delta = (diff(limits(cs),1,2)')./(s.N-1);
s.optimalg ='random';
s.doRecalc = 0;
s.guiflag = 0;
s.stratify = zeros(1,length(s.delta));
s.symmetry = 1;
s.stratify_levels = cell(1, length(s.delta));


function s = iSetInputArgs(s, N, Choice, Optim, Recalc)
% Set the input arguments that are allowed in the standard constructor
% syntax
s.N = N;
s.alg= Choice;
s.optimalg = Optim;
s.doRecalc = Recalc;