Mercurial > hg > ltpda
diff m-toolbox/classes/@ao/fromTSfcn.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/@ao/fromTSfcn.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,79 @@ +% FROMTSFCN Construct an ao from a ts-function string +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% FUNCTION: fromTSfcn +% +% DESCRIPTION: Construct an ao from a ts-function string +% +% CALL: a = fromTSfcn(pl) +% +% PARAMETER: pl: Parameter list object +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function a = fromTSfcn(a, pli) + + VERSION = '$Id: fromTSfcn.m,v 1.25 2011/08/16 06:13:02 hewitson Exp $'; + + % get AO info + ii = ao.getInfo('ao', 'From Time-series Function'); + + % Set the method version string in the minfo object + ii.setMversion([VERSION '-->' ii.mversion]); + + % Add default values + pl = applyDefaults(ii.plists, pli); + pl.getSetRandState(); + + nsecs = find(pl, 'nsecs'); + fs = find(pl, 'fs'); + fcn = find(pl, 'tsfcn'); + t0 = find(pl, 't0'); + toffset = find(pl, 'toffset'); + + % Build t vector + if isempty(nsecs) || nsecs == 0 + error('### Please provide ''Nsecs'' for ts-function constructor.'); + end + if isempty(fs) || fs == 0 + error('### Please provide ''fs'' for ts-function constructor.'); + end + + + % make time vector + t = [0:1/fs:nsecs-1/fs]'; + + % make y data + y = eval([fcn ';']); + + % if the user passed a string which is not a function of t, then a + % constant value is calculated + if numel(t) ~= numel(y) + if numel(y) == 1 + disp('The function input is not a function of t; a constant value is calculated.'); + y = y*ones(size(t)); + else + error('### The function input size does not match the time base size'); + end + end + + % Make an analysis object + a.data = tsdata(t,y); + + % set t0 + a.setT0(t0); + + % set toffset + a.setToffset(toffset); + + % Set xunits and yunits + a.setXunits(pl.find('xunits')); + a.setYunits(pl.find('yunits')); + + % Add history + a.addHistory(ii, pl, [], []); + % Set object properties from the plist + a.setObjectProperties(pl); + +end + +