0001 function bs = fft(as)
0002
0003
0004
0005
0006
0007
0008
0009 invars = {};
0010 for j=1:nargin
0011 invars = [invars cellstr(inputname(j))];
0012 end
0013
0014 ALGONAME = mfilename;
0015 VERSION = '$Id: fft.html,v 1.1 2007/06/08 14:15:02 hewitson Exp $';
0016
0017
0018 bs = [];
0019
0020 a = as(1);
0021 d = get(a, 'data');
0022 dinfo = whos('d');
0023
0024
0025 dtype = dinfo.class;
0026 switch dtype
0027 case 'tsdata'
0028 disp('* FFT of tsdata object');
0029
0030
0031 nfft = length(d.x);
0032 ft = fft(d.x);
0033 ft = ft(1:nfft/2+1);
0034 f = linspace(0, d.fs/2, length(ft));
0035 fsd = fsdata(f, ft, d.fs);
0036 fsd = set(fsd, 'name', sprintf('fft(%s)', d.name));
0037 fsd = set(fsd, 'xunits', 'Hz');
0038 fsd = set(fsd, 'yunits', '');
0039
0040
0041 h = history(ALGONAME, VERSION, [], [a.hist]);
0042 h = set(h, 'invars', invars);
0043
0044
0045 b = ao(fsd, h);
0046 b = set(b, 'name', sprintf('fft(%s)', char(invars{1})));
0047
0048 case 'fsdata'
0049 disp('* FFT of fsdata object');
0050 error('### I don''t work for frequency-series data yet.');
0051
0052
0053 otherwise
0054 error('### unknown data type. They can not be addded.')
0055 end
0056
0057
0058 bs = [bs b];
0059
0060
0061