% TEST_AO_SMOOTHER a test function the AO method smoother.
%
% M Hewitson 02-03-08
%
% $Id: test_ao_smoother.m,v 1.8 2009/02/02 15:20:38 hewitson Exp $
%
function test_ao_smoother


  % ------------- Frequency data smoothing ---------------------------------


  % Make some test data

  nsecs = 5000;
  fs    = 10;

  p1 = pz(0.01, 1);
  z1 = pz(0.2);
  gain =1;

  pzm = pzmodel(gain, p1, z1);
  % calling the noisegenerator
  a1 = fngen(pzm, plist('Nsecs', nsecs));
  a1.setYunits('V');
  a1.setXunits('s');
  a1.setName('noise');
  a2 = ao(plist('tsfcn', '0.003.*sin(2*pi*0.65*t) + 0.001.*sin(2*pi*3*t)', 'fs', a1.data.fs, 'nsecs', nsecs));
  a2.setName('signal');
  a3 = a1 + a2;

  % parameter list for lpsd
  pl = plist(...
    'Kdes', 100, ...
    'Kmin', 2, ...
    'Jdes', 500, ...
    'Win', specwin('Kaiser', 10, 150), ...
    'Order', 1);

  %  Make spectrum
  a3xx = psd(a3, plist('Nfft', 1000*fs));


  % Median Smooth both

  pl = plist('width', 100, 'hc', 0.7, 'method', 'median');
  a3s = smoother(a3, pl);
  pl = plist('width', 30, 'hc', 0.8, 'method', 'median');
  a3xxs = smoother(a3xx, pl);

  % Plot
  pl = plist('Legends', {'', 'median'});
  iplot(a3, a3s, pl)
  iplot(a3xx, a3xxs, pl)

  % Mean smooth


  pl = plist('width', 100, 'hc', 0.7, 'method', 'mean');
  a3s = smoother(a3, pl);
  pl = plist('width', 20, 'hc', 0.8, 'method', 'mean');
  a3xxs = smoother(a3xx, pl);

  % Plot
  pl = plist('Legends', {'', 'mean'});
  iplot(a3, a3s, pl)
  iplot(a3xx, a3xxs, pl)

  % Max smooth

  pl = plist('width', 1000, 'hc', 0.7, 'method', 'max');
  a3s = smoother(a3, pl);
  pl = plist('width', 20, 'hc', 0.8, 'method', 'max');
  a3xxs = smoother(a3xx, pl);

  % Plot
  pl = plist('Legends', {'', 'max'});
  iplot(a3, a3s, pl)
  iplot(a3xx, a3xxs, pl)

  % Min smooth

  pl = plist('width', 1000, 'hc', 0.7, 'method', 'min');
  a3s = smoother(a3, pl);
  pl = plist('width', 20, 'hc', 0.8, 'method', 'min');
  a3xxs = smoother(a3xx, pl);

  % Plot
  pl = plist('Legends', {'', 'min'});
  iplot(a3, a3s, pl)
  iplot(a3xx, a3xxs, pl)

  % Mode smooth

  pl = plist('width', 1000, 'hc', 0.7, 'method', 'mode');
  a3s = smoother(a3, pl);
  pl = plist('width', 20, 'hc', 0.8, 'method', 'mode');
  a3xxs = smoother(a3xx, pl);

  % Plot
  pl = plist('Legends', {'', 'mode'});
  iplot(a3, a3s, pl)
  iplot(a3xx, a3xxs, pl)


end