diff testing/utp_1.1/utp_fcns/get_test_obj_ao_noisegen1D.m @ 44:409a22968d5e default

Add unit tests
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Tue, 06 Dec 2011 18:42:11 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testing/utp_1.1/utp_fcns/get_test_obj_ao_noisegen1D.m	Tue Dec 06 18:42:11 2011 +0100
@@ -0,0 +1,207 @@
+% test csd for ao/noisegen1D
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 
+% DESCRIPTION: Output a model for mdc1 cross spectral density
+% 
+% CALL:
+%       [PSD,a1,a2,a3,a4,a5,av,am,plstd] = get_test_obj_ao_noisegen1D()
+% 
+%
+% OUTPUTS:
+%              CSD     -  a 2x2 matrix of analysis objects containing CSD
+%                       models
+%              TF      -  a 2x2 matrix of analysis objects containing TF
+%                       models
+%              a#      -  are white noise aos
+%              av      -  a vector of wn aos
+%              am      -  a matrix of wn aos
+%              plst    -  a standard plist to call noisegen2D
+% 
+%
+% 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function [PSD,a1,a2,a3,a4,a5,av,am,plstd,plstd2] = get_test_obj_ao_noisegen1D()
+  
+  nsecs = 100;
+  fs = 10; % Hz
+  f = logspace(-6,log10(fs/2),100).'; % vector of frequencies Hz
+
+  % Models response calculation
+  tf11 = calcTF11(f,fs);
+  tf12 = calcTF12(f,fs);
+
+  % PSD calculation
+  PSD = tf11.*conj(tf11)+tf12.*conj(tf12);
+  PSD.setName('PSD');
+  
+  
+  % Building test objects
+  a1 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', nsecs, 'yunits', 'm'));
+  a2 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', nsecs));
+  a3 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', nsecs, 'yunits', 'V'));
+  a4 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', nsecs, 'yunits', ''));
+  a5 = ao(plist('tsfcn', 'randn(size(t)).''', 'fs', fs, 'nsecs', nsecs, 'yunits', 'fm s^-2'));
+  av = [a1 a2 a3];
+  am = [a1 a2; a3 a4];
+  
+  a1.setName;
+  a2.setName;
+  a3.setName;
+  a4.setName;
+  a5.setName;
+  
+  % building standard plist
+  plstd = plist(...
+      'model', PSD, ...
+      'MaxIter', 60, ...
+      'PoleType', 2, ...
+      'MinOrder', 15, ...
+      'MaxOrder', 45, ...
+      'Weights', 3, ...
+      'Plot', false,...
+      'Disp', false,...
+      'MSEVARTOL', 0.1,...
+      'FITTOL', 0.01);
+    
+    plstd2 = plist(...
+      'fs', fs, ...
+      'Iunits', '', ...
+      'Ounits', 'm', ...
+      'MaxIter', 60, ...
+      'PoleType', 2, ...
+      'MinOrder', 15, ...
+      'MaxOrder', 45, ...
+      'Weights', 3, ...
+      'Plot', false,...
+      'Disp', false,...
+      'MSEVARTOL', 0.1,...
+      'FITTOL', 0.01);
+
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% LOCAL FUNCTIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function tf11 = calcTF11(f,fs)
+  
+  
+  
+  % Model Stefano TF11 coefficients
+  dRes11 = [2.44554138162509e-011 - 1.79482547894083e-011i;
+  2.44554138162509e-011 + 1.79482547894083e-011i;
+  2.66402334803101e-009 +  1.1025122049153e-009i;
+  2.66402334803101e-009 -  1.1025122049153e-009i;
+  -7.3560293387644e-009;
+  -1.82811618589835e-009 - 1.21803627800855e-009i;
+  -1.82811618589835e-009 + 1.21803627800855e-009i;
+  1.16258677367555e-009;
+  1.65216557639319e-016;                         
+  -1.78092396888606e-016;
+  -2.80420398962379e-017;
+  9.21305973049041e-013 - 8.24686706827269e-014i;
+  9.21305973049041e-013 + 8.24686706827269e-014i;
+  5.10730060739905e-010 - 3.76571756625722e-011i;
+  5.10730060739905e-010 + 3.76571756625722e-011i;
+  3.45893698149735e-009;
+  3.98139182134446e-014 - 8.25503935419059e-014i;
+  3.98139182134446e-014 + 8.25503935419059e-014i;
+  -1.40595719147164e-011];
+
+  dPoles11 = [0.843464045655194 - 0.0959986292915475i;
+  0.843464045655194 + 0.0959986292915475i;
+  0.953187595424927 - 0.0190043625473383i;
+  0.953187595424927 + 0.0190043625473383i;
+  0.967176277937188;
+  0.995012027005247 - 0.00268322602801729i;
+  0.995012027005247 + 0.00268322602801729i;
+  0.996564761885673;
+  0.999999366165445;
+  0.999981722418555;
+  0.999921882627659;
+  0.999624431675213 - 0.000813407848742761i;
+  0.999624431675213 + 0.000813407848742761i;
+  0.997312006278751 - 0.00265611346834941i;
+  0.997312006278751 + 0.00265611346834941i;
+  0.990516544257531;
+  0.477796923118318 - 0.311064085401834i;
+  0.477796923118318 + 0.311064085401834i;
+  0];
+
+  dDTerms11 = 0;
+  
+  % response calculation
+  pfparams.type = 'disc';
+  pfparams.freq = f;
+  pfparams.fs = fs;
+  pfparams.res = dRes11;
+  pfparams.pol = dPoles11;
+  pfparams.dterm = dDTerms11;
+  pfr = utils.math.pfresp(pfparams);
+  mtf11 = pfr.resp;
+  
+  % building AOs
+  tf11 = ao(plist('xvals', f, 'yvals', mtf11, 'fs', fs, 'type', 'fsdata'));
+  % name for this object
+  tf11.setName('TF11');
+
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function tf12 = calcTF12(f,fs)
+  
+  % Model Stefano TF12
+  dRes12 = [1.44258422208796e-017 + 7.07359428613009e-019i;
+  1.44258422208796e-017 - 7.07359428613009e-019i;
+  -3.4918408053655e-021 - 1.05662874569329e-021i;
+  -3.4918408053655e-021 + 1.05662874569329e-021i;
+  -7.61773292876976e-021;
+  4.84357724603939e-020 + 2.38824204294595e-019i;
+  4.84357724603939e-020 - 2.38824204294595e-019i;
+  -4.07088520945753e-020 - 2.31474543846105e-019i;
+  -4.07088520945753e-020 + 2.31474543846105e-019i;
+  8.73316588658882e-023;
+  -5.21840635377469e-020;
+  1.8461911504859e-023;                         
+  5.20105247464461e-020;
+  -4.68960092394415e-022;
+  -1.44261407664171e-017 +  6.8922564526833e-019i;
+  -1.44261407664171e-017 -  6.8922564526833e-019i;
+  3.13688133935426e-022];
+
+  dPoles12 = [0.477546340377332 -     0.310830571032376i;
+            0.477546340377332 +     0.310830571032376i;
+             0.99790715414307 -    0.0028490561287024i;
+             0.99790715414307 +    0.0028490561287024i;
+            0.998014205354671                         ;
+            0.999585354543332 -  0.000780408757425194i;
+            0.999585354543332 +  0.000780408757425194i;
+             0.99966003029931 -  0.000830944038363768i;
+             0.99966003029931 +  0.000830944038363768i;
+            0.999962770401331                         ;
+            0.999981881865521                         ;
+            0.999999365763457                         ;
+            0.999981706320212                         ;
+             0.99992421574188                         ;
+            0.477898460791003 +     0.311001926610074i;
+            0.477898460791003 -     0.311001926610074i;
+                            0];
+  dDTerms12 = 0;
+  
+  % response calculation
+  pfparams.type = 'disc';
+  pfparams.freq = f;
+  pfparams.fs = fs;
+  pfparams.res = dRes12;
+  pfparams.pol = dPoles12;
+  pfparams.dterm = dDTerms12;
+  pfr = utils.math.pfresp(pfparams);
+  mtf12 = pfr.resp;
+  
+  % building AOs
+  tf12 = ao(plist('xvals', f, 'yvals', mtf12, 'fs', fs, 'type', 'fsdata'));
+  % name for this object
+  tf12.setName('TF12');
+
+end
+