diff m-toolbox/test/test_ao_timeaverage.m @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/test/test_ao_timeaverage.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,66 @@
+function test_timeaverage()
+  
+  % create a tsdata ao
+  a = ao(plist('waveform', 'noise', 'fs', 10, 'nsecs', 1000));
+  
+  % times vector
+  times = [ 0 100 200 300 400 500 ];
+  
+  % average
+  b1 = timeaverage(a, plist('times', times));
+  
+  % this should have produced a time series with 3 points
+  assert(len(b1) == 3);
+  % check expected X values
+  assert(almostEqual(b1.x, [50 250 450], 0.055));
+  % check expected Y values
+  assert(almostEqual(b1.y, [0; 0; 0], 0.1));
+  
+  % average
+  b2 = timeaverage(a, plist('start', 0, 'duration', 100, 'decay', 100, 'repetitions', 3));
+  
+  % this should have produced the same values
+  assert(len(b2) == 3);
+  assert(almostEqual(b2.x, b1.x));
+  assert(almostEqual(b2.y, b1.y));
+  
+  % average
+  b3 = timeaverage(a, plist('times', times, 'function', @mean));
+  
+  % this should have produced the same values
+  assert(len(b3) == 3);
+  assert(almostEqual(b3.x, b1.x));
+  assert(almostEqual(b3.y, b1.y));
+  
+  % average
+  b4 = timeaverage(a, plist('times', times, 'xfunction', @min, 'yfunction', @mean));
+  
+  % this should have produced the same values
+  assert(len(b4) == 3);
+  assert(almostEqual(b4.x, [0 200 400]));
+  assert(almostEqual(b4.y, b1.y));
+  
+  % average
+  b5 = timeaverage(a, plist('times', times, 'function', 'center'));
+  
+  % this should have produced similar values
+  assert(len(b5) == 3);
+   % check expected X values
+  assert(almostEqual(b1.x, [50 250 450], 0.055));
+  % check expected Y values
+  assert(almostEqual(b1.y, [0; 0; 0], 0.1));
+  
+end
+
+function rv = almostEqual(x, y, delta)
+  % fix dimensions
+  x = x(:);
+  y = y(:);
+  
+  % default tollerance
+  if nargin < 3
+    delta = 2*eps(x);
+  end
+  
+  rv = all(abs(x - y) < delta);
+end
\ No newline at end of file