0001 function bs = upsample(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
0028 VERSION = '$Id: upsample.m,v 1.2 2007/11/26 14:48:13 ingo Exp $';
0029 ALGONAME = mfilename;
0030 bs = [];
0031
0032
0033 if nargin == 2
0034 if isa(varargin{1}, 'ao') && ischar(varargin{2})
0035 in = char(varargin{2});
0036 if strcmp(in, 'Params')
0037 bs = getDefaultPL();
0038 return
0039 elseif strcmp(in, 'Version')
0040 bs = VERSION;
0041 return
0042 end
0043 end
0044 end
0045
0046 VERSION = '$Id: upsample.m,v 1.2 2007/11/26 14:48:13 ingo Exp $';
0047
0048
0049 invars = {};
0050 as = [];
0051 pl = [];
0052
0053 for j=1:nargin
0054 a = varargin{j};
0055 if isa(a, 'ao')
0056 d = a.data;
0057 if isa(d, 'tsdata')
0058 as = [as a];
0059
0060 ao_name = inputname(j);
0061 if isempty(ao_name)
0062 ao_name = 'no_ao_name';
0063 end
0064
0065
0066
0067 if numel(varargin{j}) == 1
0068 invars{end+1} = ao_name;
0069 else
0070 for ii=1:numel(varargin{j})
0071 [I,J] = ind2sub(size(varargin{j}),ii);
0072 invars{end+1} = sprintf('%s(%d,%d)', ao_name, I, J);
0073 end
0074 end
0075 else
0076 warning('!!! ignoring non-time-series AO.');
0077 end
0078 end
0079 if isa(a, 'plist')
0080 pl = a;
0081 end
0082 end
0083
0084
0085 if isempty(pl)
0086 error('### Please give a plist with a parameter ''N''.');
0087 end
0088
0089
0090 Nup = find(pl, 'N');
0091 if isempty(Nup)
0092 error('### Please give a plist with a parameter ''N''.');
0093 end
0094
0095 phase = find(pl, 'phase');
0096 if isempty(phase)
0097 phase = 0;
0098 end
0099
0100 for j=1:numel(as)
0101
0102 d = as(j).data;
0103
0104
0105 y = upsample(d.y, floor(Nup), phase);
0106
0107
0108 do = tsdata(y, Nup*d.fs);
0109 d = set(d, 'x', do.x);
0110 d = set(d, 'y', do.y);
0111 d = set(d, 'fs', do.fs);
0112
0113
0114
0115
0116 h = history(ALGONAME, VERSION, pl, as(j).hist);
0117 h = set(h, 'invars', invars);
0118
0119
0120 b = ao(d, h);
0121 b = setnh(b, 'name', sprintf('upsample(%s)', invars{j}));
0122
0123 bs = [bs b];
0124
0125 end
0126
0127
0128 bs = reshape(bs, size(as));
0129
0130
0131 function plo = getDefaultPL()
0132
0133 plo = plist();
0134 plo = append(plo, param('N', 1));
0135 plo = append(plo, param('phase', 0));
0136
0137