Mercurial > hg > ltpda
diff m-toolbox/test/test_matrix_fromCSD.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_matrix_fromCSD.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,287 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% TEST matrix/fromCSD +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% HISTORY: 23-04-2009 L Ferraioli +% Creation +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% VERSION '$Id: test_matrix_fromCSD.m,v 1.3 2009/11/06 17:00:30 luigi Exp $'; + +%% Loading spectra + +load ..\m-toolbox\test\mpsd.mat % load mpsd.mat first column is f then psd1, csd and psd2 + +f = mpsd(:,1); +psd = mpsd(:,2); +fs = 10; + +% 1dim model +mod1D = ao(plist('xvals', f, 'yvals', psd, 'fs', fs, 'dtype', 'fsdata','description','MDC1 IFO CH1')); +mod1D.setName; + +% 2dim model +csd11 = ao(plist('xvals', f, 'yvals', mpsd(:,2), 'fs', fs, 'dtype', 'fsdata','description','MDC1 IFO CH1 PSD')); +csd11.setName; +csd12 = ao(plist('xvals', f, 'yvals', mpsd(:,3), 'fs', fs, 'dtype', 'fsdata','description','MDC1 IFO CH12 CSD')); +csd12.setName; +csd21 = ao(plist('xvals', f, 'yvals', conj(mpsd(:,3)), 'fs', fs, 'dtype', 'fsdata','description','MDC1 IFO CH21 CSD')); +csd21.setName; +csd22 = ao(plist('xvals', f, 'yvals', mpsd(:,4), 'fs', fs, 'dtype', 'fsdata','description','MDC1 IFO CH2 PSD')); +csd22.setName; + +mod2D = [csd11 csd12;csd21 csd22]; + +%% +%-------------------------------------------------------------------------- +% 1 Dimensional Noisegen Filter +%-------------------------------------------------------------------------- + +%% 1 dim noisegen filter in s domain - double precision All pass + +% plist for noise generation +plns = plist(... + 'csd', mod1D, ... + 'targetobj', 'parfrac', ... + 'Nsecs', 1e4, ... + 'fs', fs, ... + 'MaxIter', 70, ... + 'PoleType', 3, ... + 'MinOrder', 10, ... + 'MaxOrder', 30, ... + 'Weights', 2, ... + 'Plot', true,... + 'MSEVARTOL', 1e-2,... + 'FITTOL', 1e-3,... + 'UseSym', 'off'); + +na = matrix(plns); + +%% 1 dim noisegen filter in s domain - symbolic precision All pass + +% plist for noise generation +plns = plist(... + 'csd', mod1D, ... + 'targetobj', 'parfrac', ... + 'Nsecs', 1e4, ... + 'fs', fs, ... + 'MaxIter', 70, ... + 'PoleType', 3, ... + 'MinOrder', 15, ... + 'MaxOrder', 30, ... + 'Weights', 2, ... + 'Plot', true,... + 'MSEVARTOL', 1e-2,... + 'FITTOL', 1e-3,... + 'UseSym', 'on'); + +na = matrix(plns); + +%% 1 dim noisegen filter in z domain - double precision All pass + +% plist for noise generation +plns = plist(... + 'csd', mod1D, ... + 'targetobj', 'miir', ... + 'Nsecs', 1e4, ... + 'fs', fs, ... + 'MaxIter', 70, ... + 'PoleType', 3, ... + 'MinOrder', 10, ... + 'MaxOrder', 30, ... + 'Weights', 2, ... + 'Plot', true,... + 'MSEVARTOL', 1e-2,... + 'FITTOL', 1e-3,... + 'UseSym', 'off'); + +na = matrix(plns); + +%% 1 dim noisegen filter in z domain - symbolic precision All pass + +% plist for noise generation +plns = plist(... + 'csd', mod1D, ... + 'targetobj', 'miir', ... + 'Nsecs', 1e4, ... + 'fs', fs, ... + 'MaxIter', 70, ... + 'PoleType', 3, ... + 'MinOrder', 10, ... + 'MaxOrder', 30, ... + 'Weights', 2, ... + 'Plot', true,... + 'MSEVARTOL', 1e-2,... + 'FITTOL', 1e-3,... + 'UseSym', 'on'); + +na = matrix(plns); + +%% +%-------------------------------------------------------------------------- +% 2 Dimensional Noisegen Filter +%-------------------------------------------------------------------------- + + +%% 2 dim noisegen filter in s domain - double precision All pass + +% plist for noise generation +plns = plist(... + 'csd', mod2D, ... + 'targetobj', 'parfrac', ... + 'MaxIter', 70, ... + 'PoleType', 3, ... + 'MinOrder', 20, ... + 'MaxOrder', 40, ... + 'Weights', 2, ... + 'Plot', true,... + 'MSEVARTOL', 1e-2,... + 'FITTOL', 1e-3,... + 'UseSym', 'off'); + +na = matrix(plns); + +%% 2 dim noisegen filter in s domain - symbolic precision All pass + +% plist for noise generation +plns = plist(... + 'csd', mod2D, ... + 'targetobj', 'parfrac', ... + 'MaxIter', 70, ... + 'PoleType', 3, ... + 'MinOrder', 20, ... + 'MaxOrder', 30, ... + 'Weights', 2, ... + 'Plot', true,... + 'MSEVARTOL', 1e-2,... + 'FITTOL', 1e-3,... + 'UseSym', 'on'); + +na = matrix(plns); + +%% Check response + +na11 = resp(na.objs(1,1),plist('f',f)); +na12 = resp(na.objs(1,2),plist('f',f)); +na21 = resp(na.objs(2,1),plist('f',f)); +na22 = resp(na.objs(2,2),plist('f',f)); + +est_csd11 = na11.*conj(na11) + na12.*conj(na12); +est_csd11.setName; +est_csd12 = na11.*conj(na21) + na12.*conj(na22); +est_csd12.setName; +est_csd22 = na12.*conj(na12) + na22.*conj(na22); +est_csd22.setName; + +iplot(csd11,est_csd11) +iplot(csd12,est_csd12) +iplot(csd22,est_csd22) + + +%% 2 dim noisegen filter in z domain - double precision All pass + +% plist for noise generation +plns = plist(... + 'csd', mod2D, ... + 'targetobj', 'miir', ... + 'fs', fs, ... + 'MaxIter', 70, ... + 'PoleType', 3, ... + 'MinOrder', 25, ... + 'MaxOrder', 30, ... + 'Weights', 2, ... + 'Plot', true,... + 'MSEVARTOL', 1e-2,... + 'FITTOL', 1e-3,... + 'UseSym', 'off'); + +na = matrix(plns); + +%% 2 dim noisegen filter in z domain - symbolic precision All pass + +% plist for noise generation +plns = plist(... + 'csd', mod2D, ... + 'targetobj', 'miir', ... + 'fs', fs, ... + 'MaxIter', 70, ... + 'PoleType', 3, ... + 'MinOrder', 25, ... + 'MaxOrder', 35, ... + 'Weights', 2, ... + 'Plot', false,... + 'MSEVARTOL', 1e-1,... + 'FITTOL', 1e-3,... + 'UseSym', 'on'); + +na = matrix(plns); + +%% Check response + +na11 = resp(na.objs(1,1).filters,plist('f',f,'bank','parallel')); +na12 = resp(na.objs(1,2).filters,plist('f',f,'bank','parallel')); +na21 = resp(na.objs(2,1).filters,plist('f',f,'bank','parallel')); +na22 = resp(na.objs(2,2).filters,plist('f',f,'bank','parallel')); + +mna = matrix([na11 na12;na21 na22]); + +ECSD = mna*conj(transpose(mna)); + +iplot(csd11,(2/fs).*ECSD.objs(1,1)) +iplot(csd12,(2/fs).*ECSD.objs(1,2)) +iplot(csd22,(2/fs).*ECSD.objs(2,2)) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +