Mercurial > hg > ltpda
view m-toolbox/classes/@plist/plist.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children | 947e2ff4b1b9 |
line wrap: on
line source
% PLIST Plist class object constructor. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % DESCRIPTION: PLIST Parameter-List Object class object constructor. % Create a plist object. % % SUPER CLASSES: ltpda_uo < ltpda_obj % % CONSTRUCTORS: % % pl = plist() - create an empty plist object. % pl = plist(p) - create a plist with elements p % where p is an array of param objects. % pl = plist('key', val) - create a plist with the key/value % pair % pl = plsit({'key', 'desc'}, val) - create a plist with the key/value % pair and a description for the 'key' % pl = plist('key1', val1, ... - create a plist with more key/value % 'key2', val2, ... pairs % {'key3', 'desc'}, 'val3) % pl = plist({'a', 1, 'b', 2}) - create a plist from a cell % pl = plist('file.xml') - load a plist-object from xml-file % pl = plist('file.mat') - load a plist-object from mat-file % pl = plist(pl) - copies the input plist. % % PARAMETERS: % % If no recognised parameters are found in the input plist, the input % plist is simply returned. This is the copy constructor. % % <a href="matlab:utils.helper.displayMethodInfo('plist', 'plist')">Parameters Description</a> % % VERSION: $Id: plist.m,v 1.146 2011/08/15 05:58:04 hewitson Exp $ % % SEE ALSO: ltpda_obj, ltpda_uo, ltpda_uoh, param % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% classdef plist < ltpda_uo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Property definition % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %---------- Public (read/write) Properties ---------- properties end %---------- Protected read-only Properties ---------- properties (SetAccess = protected) params = []; % list of param-objects end %---------- Removed properties ---------- % We have to define the removed properties as hidden constants. % In case of backwards compatibility it is necessary to keep them because % MATLAB will read older MAT-files as structures which we have to convert % into an object if we make major change to a class. % For MATLAB is a major change if we remove a proeprty. properties (Constant = true, Hidden = true) creator = []; created = []; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Check property setting % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Constructor % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% methods function pl = plist(varargin) import utils.const.* %%%%%%%%%% Set dafault values %%%%%%%%%% %%%%%%%%%% Overwrite dafault name %%%%%%%%%% pl.name = ''; %%%%%%%%%% Copy constructor %%%%%%%%%% % Collect all plist objects [pls, invars, rest] = utils.helper.collect_objects(varargin(:), 'plist'); if isempty(rest) && ~isempty(pls) && numel(pls) ~=1 % Do copy constructor and return utils.helper.msg(msg.OPROC1, 'copy constructor'); pl = copy(pls, 1); return end if nargin == 0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% no input %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% pl = plist() %%%%%%%%%% elseif nargin == 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% one input %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if isa(varargin{1}, 'plist') && numel(varargin{1}) == 1 %%%%%%%%%% p = param(plist) %%%%%%%%%% pli = varargin{1}; if isempty(varargin{1}.params) %%% If the plist is empty then return an empty plist object else %%% Retrieve from repository? if pli.isparam('hostname') || pli.isparam('conn') utils.helper.msg(msg.OPROC1, 'retrieving from repository %s', pli.find('hostname')); pl = pl.fromRepository(pli); elseif pli.isparam('filename') utils.helper.msg(msg.OPROC1, 'constructing from filename'); pl = pl.fromFile(pli); elseif pli.isparam('built-in') utils.helper.msg(msg.OPROC1, 'constructing from model'); pl = pl.fromModel(pli); else utils.helper.msg(msg.OPROC1, 'copying from %s', varargin{1}.name); pl = copy(varargin{1}, 1); end end elseif ischar(varargin{1}) %%%%%%%%%%% From file %%%%%%%%%%%%%%%%%%%%%%%% filename = varargin{1}; utils.helper.msg(msg.OPROC1, 'constructing from file %s', filename); pl = fromFile(pl, filename); elseif isstruct(varargin{1}) %%%%%%%%%% pl = plist(struct) %%%%%%%%%% utils.helper.msg(msg.OPROC1, 'constructing from struct'); pl = fromStruct(pl, varargin{1}); elseif isa(varargin{1}, 'param') %%%%%%%%%% pl = plist(param) %%%%%%%%%% utils.helper.msg(msg.OPROC1, 'constructing from param'); pl.params = varargin{1}; elseif iscell(varargin{1}) %%%%%%%%%% pl = plist({'a', 1, 'b', 2}) %%%%%%%%%% c = varargin{1}; pl = plist(c{:}); else error ('### unknown arguments to construct a parameter list') end elseif nargin == 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% two inputs %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if (isa(varargin{1}, 'database') || isa(varargin{1}, 'mpipeline.repository.RepositoryConnection')) %%%%%%%%%%% From DATABASE %%%%%%%%%%% utils.helper.msg(msg.OPROC1, 'constructing from database object'); pl = pl.fromRepository(plist('conn', varargin{1}, 'id', varargin{2})); elseif ischar(varargin{1}) %%%%%%%%%% pl = plist('key1', val1) %%%%%%%%%% utils.helper.msg(msg.OPROC1, 'constructing from key/value pair'); pl.params = param(varargin{1}, varargin{2}); elseif iscell(varargin{1}) && numel(varargin{1}) == 2 && ~iscell(varargin{2}) %%%%%%%%%% pl = plist({'key', 'desc'}, val1) %%%%%%%%%% utils.helper.msg(msg.OPROC1, 'constructing from [key,desc]/value pair'); pl.params = param(varargin{1}{1}, varargin{2}, varargin{1}{2}); elseif iscell(varargin{1}) && iscell(varargin{2}) %%%%%%%%%% pl = plist({'key', 'desc'}, {value, {options}, selection}) %%%%%%%%%% pl.params = param(varargin{1}, varargin{2}); elseif isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl') && ... isa(varargin{2}, 'history') %%%%%%%%%% obj = plist(DOM node, history-objects) %%%%%%%%%% pl = fromDom(pl, varargin{1}, varargin{2}); else error('### Unknown constructor method for two inputs.'); end elseif nargin > 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% more inputs %%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% utils.helper.msg(msg.OPROC1, 'constructing from key/value pairs'); %%%%%%%%%% pl = plist('key1', val1, 'key2', val2 , ...) %%%%%%%%%% %%%%%%%%%% pl = plist({'key1', 'desc'}, val1, 'key2', val2 , ...) %%%%%%%%%% param_list = []; argin = varargin; while length(argin) >= 2 key = argin{1}; val = argin{2}; desc = ''; argin = argin(3:end); % It might be that the key is specified with a description if iscell(key) && numel(key) == 2 desc = key{2}; key = key{1}; end if ~isempty(param_list) found = any(strcmpi(key, {param_list(:).key})); if found error('### Do not use the same key [%s] twice.\n### REMARK: The key is not case sensitive.', key); end end % add to list if isempty(desc) param_list = [param_list param(key, val)]; else param_list = [param_list param(key, val, desc)]; end end pl.params = param_list; else error('### Unknown number of constructor arguments.'); end end % End constructor end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Methods (Static, Public) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% methods (Static = true) function out = VEROUT() out = '$Id: plist.m,v 1.146 2011/08/15 05:58:04 hewitson Exp $'; end function ii = getInfo(varargin) ii = utils.helper.generic_getInfo(varargin{:}, 'plist'); end function mdls = getBuiltInModels(varargin) mdls = ltpda_uo.getBuiltInModels('plist'); end function out = SETS() out = SETS@ltpda_uo; end function plout = getDefaultPlist(set) persistent pl; persistent lastset; if exist('pl', 'var')==0 || isempty(pl) || ~strcmp(lastset, set) pl = plist.buildplist(set); lastset = set; end plout = pl; end varargout = getDefaultAxisPlist(varargin); function out = buildplist(set) if ~utils.helper.ismember(lower(plist.SETS), lower(set)) error('### Unknown set [%s]', set); end out = plist(); out = buildplist@ltpda_uo(out, set); switch lower(set) % No special sets are dfined. end end %---------- static factory plists % Plist to construct objects from a plist function pl = FROM_PLIST pl = plist(); p = param({'Plist','A plist'}, plist); pl.append(p); end % Plist to construct an object from a built-in model function pl = FROM_BUILT_IN pl = plist(); p = param({'built-in', 'Choose one of the built-in models. (use <i>class</i>.getBuiltInModels to get a list for a particular user class)'}, paramValue.EMPTY_STRING); pl.append(p); end % Plist to read from an XML file. function pl = FROM_XML_FILE pl = plist(); p = param({'filename','XML filename.'}, paramValue.EMPTY_STRING); pl.append(p); end % Plist to read from an XML file. function pl = FROM_MAT_FILE pl = plist(); p = param({'filename','MAT filename.'}, paramValue.EMPTY_STRING); pl.append(p); end % Plist for retrieving objects from a repository. This is used in all % user-object constructor default plists for the 'From Repository' set. function pl = FROM_REPOSITORY_PLIST pl = plist(); % get repository list prefs = getappdata(0, 'LTPDApreferences'); hostNames = prefs.getRepoPrefs.getHostnames; repos = {}; for ii=0:hostNames.size()-1 repos = [repos {hostNames.get(ii)}]; end % Hostname if isempty(repos) repos = {'localhost'}; end p = param({'hostname','The repository hostname'}, {1, repos, paramValue.SINGLE}); pl.append(p); % ID p = param({'ID','A vector of object IDs.'}, paramValue.EMPTY_DOUBLE); pl.append(p); % CID p = param({'CID','A vector of collection IDs.'}, paramValue.EMPTY_DOUBLE); pl.append(p); % Database p = param({'database','The database name.'}, paramValue.EMPTY_STRING); pl.append(p); % Binary p = param({'Binary','<html>Set to ''yes'' to retrieve from<br>stored binary representation (not always available).</html>'},... paramValue.YES_NO); pl.append(p); % Username p = param({'Username', 'Specify a username to connect with. Leave blank to be prompted.'}, paramValue.EMPTY_STRING); pl.append(p); % Password p = param({'Password', 'Specify a password to connect with. Leave blank to be prompted.'}, paramValue.EMPTY_STRING); pl.append(p); end % Plist for submitting/updating objects from a repository. This is used % in ltpda_uo/ -submit, -bsubmit and -update. function pl = TO_REPOSITORY_PLIST pl = plist(); % get repository list prefs = getappdata(0, 'LTPDApreferences'); hostNames = prefs.getRepoPrefs.getHostnames; repos = {}; for ii=0:hostNames.size()-1 repos = [repos {hostNames.get(ii)}]; end % Hostname if isempty(repos) repos = {'localhost'}; end p = param({'hostname', 'Repository server hostname'}, {1, repos, paramValue.SINGLE}); pl.append(p); % Database p = param({'database', 'Database name'}, paramValue.EMPTY_STRING); pl.append(p); % Username p = param({'username', 'User name to access the repository'}, paramValue.EMPTY_STRING); pl.append(p); % Password p = param({'password', 'Password'}, paramValue.EMPTY_STRING); pl.append(p); % experiment title p = param({'experiment title', 'Title for the submission'}, paramValue.EMPTY_STRING); pl.append(p); % experiment description p = param({'experiment description', 'Description of this submission'}, paramValue.EMPTY_STRING); pl.append(p); % analysis description p = param({'analysis description', 'Description of the analysis performed'}, paramValue.EMPTY_STRING); pl.append(p); % quantity p = param({'quantity', 'Physical quantity represented by the data'}, paramValue.EMPTY_STRING); pl.append(p); % keywords p = param({'keywords', 'Comma-delimited list of keywords'}, paramValue.EMPTY_STRING); pl.append(p); % reference ids p = param({'reference ids', 'Comma-delimited list of object IDs'}, paramValue.EMPTY_STRING); pl.append(p); % additional comments p = param({'additional comments', 'Additional comments'}, paramValue.EMPTY_STRING); pl.append(p); % additional authors p = param({'additional authors', 'Additional author names'}, paramValue.EMPTY_STRING); pl.append(p); p = param({'no dialog', 'Do not use of the submission form. Mandatory fields must be supplied in the plist.'}, paramValue.FALSE_TRUE); pl.append(p); p = param({'use selector', 'Allow to select to which database to connect'}, paramValue.TRUE_FALSE); pl.append(p); end % Plist for Welch-based, linearly spaced spectral estimators. % This is used in psd, cpsd, cohere, tfe function pl = WELCH_PLIST pl = plist(); % Nfft p = param({'Nfft',['The number of samples in each fft [default: length of input data]. <br>', ... 'A string value containing the variable ''fs'' can also be used, e.g., <br> ', ... '<tt>plist(''Nfft'', ''2*fs'')</tt>']}, paramValue.DOUBLE_VALUE(-1)); pl.append(p); % Win p = param({'Win',['The window to be applied to the data to remove the ', ... 'discontinuities at edges of segments. [default: taken from user prefs] <br>', ... 'Only the design parameters of the window object are used. Enter ', ... 'a string value containing the window name e.g.<br>', ... '<tt>plist(''Win'', ''Kaiser'', ''psll'', 200)</tt><br>', ... '<tt>plist(''Win'', ''BH92'')</tt>']}, paramValue.WINDOW); pl.append(p); % Psll p = param({'Psll',['The peak sidelobe level for Kaiser windows.<br>', ... 'Note: it is ignored for all other windows']}, paramValue.DOUBLE_VALUE(200)); pl.append(p); % Olap p = param({'Olap','The segment percent overlap [-1 == take from window function]'}, {1, {-1}, paramValue.OPTIONAL}); pl.append(p); % Order p = param({'Order',['The order of segment detrending:<ul>', ... '<li>-1 - no detrending</li>', ... '<li>0 - subtract mean</li>', ... '<li>1 - subtract linear fit</li>', ... '<li>N - subtract fit of polynomial, order N</li></ul>']}, paramValue.DETREND_ORDER); p.val.setValIndex(2); pl.append(p); % Navs p = param({'Navs',['Force number of averages. If set, and if Nfft was set to 0 or -1,<br>', ... 'the number of points for each window will be calculated to match the request.']}, paramValue.DOUBLE_VALUE(-1)); pl.append(p); % Times p = param({'Times',['The time range to analyze. If not empty, sets the time interval to operate on.<br>', ... 'As in ao/split, the interval can be specified by:<ul>' ... '<li>a vector of doubles</li>' ... '<li>a timespan object</li>' ... '<li>a cell array of time strings</li>' ... '<li>a vector of time objects</li></ul>' ... ]}, paramValue.DOUBLE_VALUE([])); pl.append(p); % Split: the same as 'times' p = p.copy(true); pl.append(p.setKey('Split')); end % Plist for Welch-based, log-scale spaced spectral estimators. % This is used in lpsd, lcpsd, lcohere, ltfe function pl = LPSD_PLIST pl = plist(); % Kdes p = param({'Kdes', 'The desired number of averages.'}, {1, {100}, paramValue.OPTIONAL}); pl.append(p); % Jdes p = param({'Jdes', 'The desired number of spectral frequencies to compute.'}, {1, {1000}, paramValue.OPTIONAL}); pl.append(p); % Lmin p = param({'Lmin', 'The minimum segment length.'}, {1, {0}, paramValue.OPTIONAL}); pl.append(p); % Win p = param({'Win',['The window to be applied to the data to remove the ', ... 'discontinuities at edges of segments. [default: taken from user prefs] <br>', ... 'Only the design parameters of the window object are used. Enter ', ... 'a string value containing the window name e.g.<br>', ... '<tt>plist(''Win'', ''Kaiser'', ''psll'', 200)</tt><br>', ... '<tt>plist(''Win'', ''BH92'')</tt>']}, paramValue.WINDOW); pl.append(p); % Psll p = param({'Psll',['The peak sidelobe level for Kaiser windows.<br>', ... 'Note: it is ignored for all other windows']}, paramValue.DOUBLE_VALUE(200)); pl.append(p); % Olap p = param({'Olap','The segment percent overlap [-1 == take from window function]'}, {1, {-1}, paramValue.OPTIONAL}); pl.append(p); % Order p = param({'Order',['The order of segment detrending:<ul>', ... '<li>-1 - no detrending</li>', ... '<li>0 - subtract mean</li>', ... '<li>1 - subtract linear fit</li>', ... '<li>N - subtract fit of polynomial, order N</li></ul>']}, paramValue.DETREND_ORDER); p.val.setValIndex(2); pl.append(p); % Times p = param({'Times',['The time range to analyze. If not empty, sets the time interval to operate on.<br>', ... 'As in ao/split, the interval can be specified by:<ul>' ... '<li>a vector of doubles</li>' ... '<li>a timespan object</li>' ... '<li>a vector of time objects</li></ul>' ... ]}, paramValue.DOUBLE_VALUE([])); pl.append(p); % Split: the same as 'times' p = p.copy(true); pl.append(p.setKey('Split')); end % Plist for linear fitting methods % This is used in linfit, polynomfit function pl = LINEAR_FIT_PLIST pl = plist(); % dy p = param({'dy', ['Uncertainty on Y. Can be expressed as<ul>' ... '<li>an AO with single value or</li>' ... '<li>an AO with a vector of the right lenght or</li>' ... '<li>a double or</li>' ... '<li>an array of double of the right lenght</li></ul>' ]}, ... paramValue.EMPTY_DOUBLE); pl.append(p); % dx p = param({'dx', ['Uncertainty on X(1..N). Can be expressed as<ul>' ... '<li>an AO with single value or</li>' ... '<li>an AO with a vector of the right lenght or</li>' ... '<li>a double or</li>' ... '<li>an array of double of the right lenght</li></ul>' ]}, ... paramValue.EMPTY_DOUBLE); pl.append(p); % p0 p = param({'p0', ['Initial guess of the fit parameters. Can be expressed as:<ul>' ... '<li>an AOs with a vector</li>' ... '<li>an array of scalars or</li>' ... '<li>a pest object</li></ul>']}, ... paramValue.EMPTY_DOUBLE); pl.append(p); end % Plist for multilinear fitting methods % This is used in bilinfit function pl = MULTILINEAR_FIT_PLIST pl = plist(); % dy p = param({'dy', ['Uncertainty on Y. Can be expressed as<ul>' ... '<li>an AO with single value or</li>' ... '<li>an AO with a vector of the right lenght or</li>' ... '<li>a double or</li>' ... '<li>an array of double of the right lenght</li></ul>' ]}, ... paramValue.EMPTY_DOUBLE); pl.append(p); % dx p = param({'dx', ['Uncertainty on X1 ... XN. Can be expressed as<ul>' ... '<li>an array of N AOs with single value or</li>' ... '<li>an array of N AOs with data vectors of the right lenght or</li>' ... '<li>an array of N double</li></ul>' ]}, ... paramValue.EMPTY_DOUBLE); pl.append(p); % p0 p = param({'p0', ['Initial guess of the fit parameters. Can be expressed as:<ul>' ... '<li>an AOs with a vector</li>' ... '<li>an array of scalars or</li>' ... '<li>a pest object</li></ul>']}, ... paramValue.EMPTY_DOUBLE); pl.append(p); end % Plist for multichannel fitting methods % This is used in linfitsvd, mcmc, and tdfit function pl = MCH_FIT_PLIST pl = plist(); % Model p = param({'Model','System model. It have to be parametric. A matrix of smodel objects or a ssm object'}, paramValue.EMPTY_DOUBLE); pl.append(p); % Input Names p = param({'InNames','A cell array containing cell arrays of the input ports names for each experiment. Used only with ssm models.'}, {}); pl.append(p); % Output Names p = param({'OutNames','A cell array containing cell arrays of the output ports names for each experiment. Used only with ssm models.'}, {}); pl.append(p); % Fit Params p = param({'FitParams','A cell array with the names of the fit parameters'}, {}); pl.append(p); % Injected Signals p = param({'Input','Collection of input signals'},paramValue.EMPTY_DOUBLE); pl.append(p); end % Plist for time series % This is used in ao constructor function pl = TSDATA_PLIST pl = plist(); % Fs p = param({'fs', 'The sampling frequency of the signal. [for all]'}, paramValue.EMPTY_DOUBLE); pl.append(p); % Nsecs p = param({'nsecs', 'The number of seconds of data. [for all]'}, paramValue.EMPTY_DOUBLE); pl.append(p); % Xunits p = param({'xunits','Unit on X axis.'}, paramValue.STRING_VALUE('s')); pl.append(p); % T0 p = param({'T0', 'The UTC time of the first sample. [for all]'}, {1, {'1970-01-01 00:00:00.000'}, paramValue.OPTIONAL}); pl.append(p); % toffset p = param({'toffset', 'The offset between the first x sample and t0.'}, paramValue.DOUBLE_VALUE(0)); pl.append(p); end % Plist for dotview methods (ltpda_uoh, ssm) function pl = DOTVIEW_PLIST pl = plist(); % Filename p = param({'filename','the file name for the graphic file'}, paramValue.EMPTY_STRING); pl.append(p); % View p = param({'view','true or false to view or not'}, paramValue.TRUE_FALSE); p.val.setValIndex(1); pl.append(p); end % Plist for saving objects function pl = SAVE_OBJ_PLIST pl = plist(); % Filename p = param({'filename',['Name of the file to save in.<br>', ... 'The format is determined based on the file extension:<ul>', ... '<li>.xml for XML format</li>', ...' '<li>.mat for Matlab format</li></ul>']}, paramValue.EMPTY_STRING); pl.append(p); % Filename prefix p = param({'prefix', 'Filename prefix'}, paramValue.EMPTY_STRING); pl.append(p); % Filename postfix p = param({'postfix', 'Filename postfix'}, paramValue.EMPTY_STRING); pl.append(p); % Individual Files p = param({'individual files', 'Save the objects into Individual files'}, paramValue.FALSE_TRUE); pl.append(p); end function pl = AXIS_3D_PLIST pl = plist(); p = param({'axis', 'The axis on which to apply the method.'}, ... {3, {'x', 'y', 'z', 'xyz'}, paramValue.SINGLE}); pl.append(p); p = param({'dim', ['The dimension of the chosen vector to apply the method '... 'to. This is necessary for functions like mean() when ' ... 'applied to matrices held in cdata objects. For tsdata, '... 'fsdata or xydata, this option has no effect.']}, paramValue.EMPTY_DOUBLE); pl.append(p); p = param({'option', 'Any additional option to pass to the method.'}, paramValue.EMPTY_STRING); pl.append(p); end function pl = AXIS_2D_PLIST pl = plist(); p = param({'axis', 'The axis on which to apply the method.'}, ... {2, {'x', 'y', 'xy'}, paramValue.SINGLE}); pl.append(p); p = param({'dim', ['The dimension of the chosen vector to apply the method '... 'to. This is necessary for functions like mean() when ' ... 'applied to matrices held in cdata objects. For tsdata, '... 'fsdata or xydata, this option has no effect.']}, paramValue.EMPTY_DOUBLE); pl.append(p); p = param({'option', 'Any additional option to pass to the method.'}, paramValue.EMPTY_STRING); pl.append(p); end function plout = EMPTY_PLIST persistent pl; if ~exist('pl', 'var') || isempty(pl) || pl.nparams>0 pl = plist(); end plout = pl; end function pl = AXIS_1D_PLIST pl = plist(); p = param({'axis', 'The axis on which to apply the method.'}, ... {1, {'y'}, paramValue.SINGLE}); pl.append(p); p = param({'dim', ['The dimension of the chosen vector to apply the method '... 'to. This is necessary for functions like mean() when ' ... 'applied to matrices held in cdata objects. For tsdata, '... 'fsdata or xydata, this option has no effect.']}, paramValue.EMPTY_DOUBLE); pl.append(p); p = param({'option', 'Any additional option to pass to the method.'}, paramValue.EMPTY_STRING); pl.append(p); end function obj = initObjectWithSize(n,m) obj = plist.newarray([n m]); end varargout = ltp_parameters(varargin) end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Methods (static, hidden) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% methods (Static = true, Hidden = true) varargout = loadobj(varargin) varargout = update_struct(varargin) end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Methods (Private) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% methods (Access = private) end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Methods (Hidden) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% methods (Hidden = true) varargout = sort(varargin) varargout = applyDefaults(varargin) end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Methods (public) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% methods %%% Define Abstract methods varargout = char(varargin) varargout = copy(varargin) varargout = display(varargin) varargout = string(varargin) %%% Define other methods varargout = append(varargin) varargout = combine(varargin) varargout = find(varargin) varargout = isparam(varargin) varargout = nparams(varargin) varargout = pset(varargin) varargout = remove(varargin) varargout = setDescriptionForParam(varargin) varargout = setDefaultForParam(varargin) varargout = setOptionsForParam(varargin) varargout = setSelectionForParam(varargin) varargout = getOptionsForParam(varargin) varargout = getSelectionForParam(varargin) varargout = getDescriptionForParam(varargin) varargout = getKeys(varargin) varargout = setPropertyForKey(varargin) varargout = getPropertyForKey(varargin) end methods (Hidden = true) varargout = attachToDom(varargin) end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Methods (protected) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% methods (Access = protected) varargout = fromRepository(varargin) varargout = fromFile(varargin) varargout = fromStruct(varargin) varargout = fromDom(varargin) varargout = processSetterValues(varargin) end end % Class