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

    function p = designproperties(c,p,m)
%DESIGNPROPERTIES properties for command-line
%
% p = designproperties(c,p)

%  Copyright 2007 The MathWorks, Inc.

CLSID = mfilename('class');
[p,OK] = PersistentStore(p,CLSID);
if ~OK
    p = iMakeProps(c,p,m);
    PersistentStore(p,CLSID);
end


function p = iMakeProps(c,p,m)

p = designproperties(c.candidateset,p,m);
p = addprop(p,'NumberOfPoints',...
    @iGetNumberOfPoints,...
    '',...
    'int',[0 Inf],...
    'Number of points');


p = addprop(p,'Levels',...
    @iGetLevels,...
    @iSetLevels,...
    'cell','',...
    'Cell array of levels for each input');

p = addprop(p,'NumberOfLevels',...
    @iGetNumberLevels,...
    @iSetNumberLevels,...
    'vector int',{'positive',nfactors(m)},...
    'Number of levels for each input');

function v = iGetLevels(c,m)

v = get(c,'levels');
for i=1:length(v)
    v{i} = invcode(m,v{i}(:),i)';
end

function c = iSetLevels(c,v,m)


if numel(v)~=nfactors(m)
   error(message('mbc:doe:InvalidValue31', nfactors( m )))
end

for i=1:length(v)
    if ~isnumeric(v{i}) 
        error(message('mbc:doe:InvalidValue32', i))
    end    
    v{i} = code(m,v{i}(:),i)';
end
c = set(c,'levels',v);

function v = iGetNumberLevels(c,m)

v = cellfun(@numel,get(c,'levels'));
v = v(:)';

function c = iSetNumberLevels(c,v,m)

lims = limits(c);
levels= cell(size(v));
for i=1:length(v)
    levels{i} = linspace(lims(i,1),lims(i,2),v(i));
end
c = set(c,'levels',levels(:));

function v = iGetNumberOfPoints(c,m)

v = prod( cellfun(@numel,c.levels) );