0001 function bo = ltpda_polydetrend(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 invars = {};
0028 for j=1:nargin
0029 invars = [invars cellstr(inputname(j))];
0030 end
0031
0032 ALGONAME = mfilename;
0033 VERSION = '$Id: ltpda_polydetrend.html,v 1.1 2007/06/08 14:15:11 hewitson Exp $';
0034
0035
0036 if nargin < 1
0037 error('### Incorrect number of inputs.')
0038 end
0039
0040 args = varargin;
0041 if isa(args{end}, 'plist')
0042 pl = args{end};
0043 args = args(1:end-1);
0044 else
0045 pl = plist();
0046 end
0047 na = length(args);
0048
0049
0050 for j=1:na
0051 if ~isa(args{j}, 'ao')
0052 error('### LTPDA_COHERE only works with analysis objects.');
0053 end
0054 end
0055
0056
0057 bo = [];
0058
0059
0060 plo = plist();
0061 N = find(pl, 'N');
0062 if isempty(N)
0063 N = 1;
0064 warning(sprintf('!!! Using default polynomial degree %d', N))
0065 end
0066 plo = append(plo, param('N', N));
0067
0068
0069 for i=1:na
0070
0071
0072 a = args{i};
0073 d = a.data;
0074 dinfo = whos('d');
0075 if ~isa(d, 'tsdata')
0076 error('### I only work with time-series at the moment.');
0077 end
0078 if ~isreal(d.x)
0079 error('### I only work with real time-series at the moment.');
0080 end
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092 y = polydetrend(d.x, N);
0093
0094
0095 nameStr = sprintf('poly_detrend(%s)', d.name);
0096
0097
0098 data = tsdata(y, d.fs);
0099 data = set(data, 'name', nameStr);
0100 data = set(data, 'xunits', d.xunits);
0101 data = set(data, 'yunits', d.yunits);
0102
0103
0104 h = history(ALGONAME, VERSION, plo, a.hist);
0105 h = set(h, 'invars', invars);
0106
0107
0108 b = ao(data, h);
0109
0110
0111
0112 if isempty(invars{i})
0113 n1 = a.name;
0114 else
0115 n1 = invars{i};
0116 end
0117
0118 nameStr = sprintf('poly_detrend(%s)', n1);
0119 b = set(b, 'name', nameStr);
0120
0121
0122 bo = [bo b];
0123
0124 end
0125
0126