Home > m > sigproc > frequency_domain > phasetrack.m

phasetrack

PURPOSE ^

SYNOPSIS ^

function varargout = phasetrack(varargin)

DESCRIPTION ^

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function varargout = phasetrack(varargin)
0002 
0003 ALGONAME = mfilename;
0004 VERSION  = '$Id: phasetrack.m,v 1.1 2008/05/21 09:53:13 anneke Exp $';
0005 CATEGORY = 'Signal Processing';
0006 
0007 %% Check if this is a call for parameters, the CVS version string
0008 % or the function category
0009 if nargin == 1 && ischar(varargin{1})
0010   in = char(varargin{1});
0011   if strcmp(in, 'Params')
0012     varargout{1} = getDefaultPL();
0013     return
0014   elseif strcmp(in, 'Version')
0015     varargout{1} = VERSION;
0016     return
0017   elseif strcmp(in, 'Category')
0018     varargout{1} = CATEGORY;
0019     return
0020   end
0021 end
0022 
0023 
0024 invars = {};
0025 for j=1:nargin
0026   invars = [invars cellstr(inputname(j))];
0027 end
0028 
0029 
0030 
0031 as = [];
0032 pl = [];
0033 for j=1:nargin
0034   a = varargin{j};
0035   if isa(a, 'plist')
0036     pl = a;
0037   end
0038   if isa(a, 'ao')
0039     for k=1:length(a)
0040       ak = a(k);
0041       d = ak.data;
0042       if isa(d, 'tsdata')
0043         as = [as ak];
0044       else
0045         warning('### works only for time series');
0046       end
0047     end
0048   end
0049 end
0050 na = length(as);
0051 % unpack parameter list
0052 plo = plist();
0053 
0054 % Initialise output
0055 bo = [];
0056 
0057 for i=1:na
0058 
0059   % get data out
0060   a = as(i);
0061   d = a.data;
0062   dinfo = whos('d');
0063   if ~isa(d, 'tsdata')
0064     error('### I only work with time-series at the moment.');
0065   end
0066   if ~isreal(d.y)
0067     error('### I only work with real time-series at the moment.');
0068   end
0069   add = 0;
0070   ydata = a.data.y;
0071   y = ydata;
0072   
0073   for i = 2:length(ydata)
0074 
0075     diff = ydata(i)-ydata(i-1);
0076     if diff > pi/2
0077         add = add-pi;
0078     elseif diff < -pi/2
0079         add = add+pi;
0080     end
0081     y(i) = ydata(i) + add;  
0082   end
0083   % Make output analysis object
0084   nameStr = sprintf('phasetrack(%s)', d.name);
0085 
0086   % create new output data
0087   data = tsdata(y, d.fs);
0088   data = set(data, 'name', nameStr);
0089   data = set(data, 'xunits', d.xunits);
0090   data = set(data, 'yunits', d.yunits);
0091 
0092   % create new output history
0093   h = history(ALGONAME, VERSION, pl, a.hist);
0094   h = set(h, 'invars', invars);
0095 
0096   % make output analysis object
0097   b = ao(data, h);
0098 
0099   % set name
0100   % name for this object
0101   if isempty(invars{j})
0102     n1 = a.name;
0103   else
0104     n1 = invars{j};
0105   end
0106 
0107   nameStr = sprintf('phasetrack(%s)', n1);
0108   b = setnh(b, 'name', nameStr);
0109 
0110   % Add to output array
0111   bo = [bo b];
0112 
0113 
0114 end
0115 varargout{1} = bo;
0116 
0117 %--------------------------------------------------------------------------
0118 % Get default params
0119 function plo = getDefaultPL()
0120 
0121 disp('* creating default plist...');
0122 plo = plist();
0123 disp('* done.');
0124 
0125 
0126 % END
0127 
0128

Generated on Mon 08-Sep-2008 13:18:47 by m2html © 2003