diff m-toolbox/test/test_ao_whiten2D.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_whiten2D.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,127 @@
+% A test script for ao/whiten2D
+% 
+% L. Ferraioli 18-11-08
+% 
+% $Id: test_ao_whiten2D.m,v 1.6 2009/04/20 14:31:14 luigi Exp $
+% 
+
+%%
+
+clear all
+
+%% CSD Noise models
+
+% Mdc2 noise model
+% mod = ltpnoise();
+
+load mpsd.mat % load mpsd.mat first column is f then csd11, csd12 and csd22
+
+f = mpsd(:,1); % frequency vector
+csd11 = mpsd(:,2);
+csd12 = mpsd(:,3);
+csd22 = mpsd(:,4);
+fs = 10; % sampling frequency
+
+% Building AOs
+ltp_csd11 = ao(fsdata(f,csd11,fs));
+ltp_csd12 = ao(fsdata(f,csd12,fs));
+ltp_csd21 = ao(fsdata(f,conj(csd12),fs));
+ltp_csd22 = ao(fsdata(f,csd22,fs));
+
+%% 
+
+iplot(ltp_csd11,ltp_csd12,ltp_csd22)
+
+%% Colored Noise generation
+
+% Make white noise
+
+a1 = ao(plist('tsfcn', 'randn(size(t))', 'fs', 10, 'nsecs', 10000));
+a2 = ao(plist('tsfcn', 'randn(size(t))', 'fs', 10, 'nsecs', 10000));
+a = [a1 a2];
+
+% Generation from white noise
+
+pl = plist(...
+    'csd11', ltp_csd11,...
+    'csd12', ltp_csd12,...
+    'csd21', ltp_csd21,...
+    'csd22', ltp_csd22,...
+    'MaxIter', 70, ...
+    'PoleType', 2, ...
+    'MinOrder', 20, ...
+    'MaxOrder', 30, ...
+    'Weights', 2, ...
+    'Plot', false,...
+    'MSEVARTOL', 1e-2,...
+    'FITTOL', 1e-3,...
+    'UseSym', 0,...
+    'Disp', false);
+
+ac = noisegen2D(a, pl);
+
+%% Checking generated noise
+
+acxx1 = ac(1).psd;
+acxx2 = ac(2).psd;
+acxx12 = ac.cpsd;
+
+iplot(abs(acxx1),abs(ltp_csd11))
+iplot(abs(acxx12),abs(ltp_csd12))
+iplot(abs(acxx2),abs(ltp_csd22))
+
+%% Noise whitening
+
+pl = plist(...
+    'csd11', ltp_csd11, ...
+    'csd12', ltp_csd12, ...
+    'csd21', ltp_csd21, ...
+    'csd22', ltp_csd22, ...
+    'MaxIter', 75, ...
+    'PoleType', 3, ...
+    'MinOrder', 20, ...
+    'MaxOrder', 40, ...
+    'Weights', 2, ...
+    'Plot', false,...
+    'MSEVARTOL', 1e-2,...
+    'FITTOL', 1e-3,...
+    'UseSym', 0,...
+    'Disp', false);
+
+aw = whiten2D(ac, pl);
+
+%% Checking whitened noise
+
+awxx1 = aw(1).psd;
+awxx2 = aw(2).psd;
+
+%%
+iplot(awxx1,awxx2)
+
+%% Checking
+
+aw1 = aw(1);
+aw2 = aw(2);
+awxx1 = awxx(1,1);
+awxx2 = awxx(2,2);
+
+mw1 = aw1.mean; % 0 expected
+vw1 = aw1.var; % 1 expected
+
+mw2 = aw2.mean; % 0 expected
+vw2 = aw2.var; % 1 expected
+
+mwxx1 = awxx1.mean; % 0.2 expected
+vwxx1 = awxx1.var;
+
+mwxx2 = awxx2.mean; % 0.2 expected
+vwxx2 = awxx2.var;
+
+% correlation coefficients
+% diagonal terms are aw1 and aw2 variances
+% cross terms are data series covariances, a value close to 0 means no
+% correlation between the data series
+crc = corrcoef([aw1.data.y.' aw2.data.y.']);
+
+
+% END
\ No newline at end of file