Home > classes > @ao > fft.m

fft

PURPOSE ^

FFT overloads the fft operator for Analysis objects.

SYNOPSIS ^

function bs = fft(as)

DESCRIPTION ^

 FFT overloads the fft operator for Analysis objects.
 
 M Hewitson 12-03-07

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function bs = fft(as)
0002 
0003 % FFT overloads the fft operator for Analysis objects.
0004 %
0005 % M Hewitson 12-03-07
0006 %
0007 
0008 % capture input variable names
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 % Check input analysis object
0020 a  = as(1);
0021 d = get(a, 'data');
0022 dinfo = whos('d');
0023 
0024 % Which data type do we have
0025 dtype = dinfo.class;
0026 switch dtype
0027   case 'tsdata'
0028     disp('* FFT of tsdata object');
0029 
0030     % make a new fsdata object
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     % make a new history object
0041     h = history(ALGONAME, VERSION, [], [a.hist]);
0042     h = set(h, 'invars', invars);
0043 
0044     % make output analysis object
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 % add to output
0058 bs = [bs b];
0059 
0060 
0061 % END

Generated on Fri 08-Jun-2007 16:09:11 by m2html © 2003