Mercurial > hg > ltpda
diff m-toolbox/test/test_ao_dispersion.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_dispersion.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,94 @@ +% A test script for ao/dispersion +% +% M Nofrarias 07-05-09 +% +% $Id: test_ao_dispersion.m,v 1.2 2009/05/08 13:15:36 miquel Exp $ +% + +function test_ao_dispersion() + +fs =10; +f = logspace(-5,log10(fs/2),100)'; + +%% nominal plist +pl = plist( 'f', f,... +'fs', fs,... +'wp1',0.0010488*1i,... % sqrt(-11e-7) +'wp2',0.0014832*1i,... % sqrt(-22e-7) +'Cdf',0.8,... +'Clfs',1.15,... +'dS',1.35e-4,... +'p_ifo1',[3.6e-12 10e-3 4.2 1.8e-3 8],... +'p_tm1',[7e-15 5e-3 3 4e-4 9],... +'p_ifo2', [3.6e-12 10e-3 4.2 1.8e-3 8],... +'p_tm2', [7e-15 5e-3 3 4e-4 9],... +'p_sc', [2.5e-10 12e-3 3.8 1e-3 8],... +'nsecs', 1e4,... +'fsgen', 50); + +%% Compute transfer function + +tf1 = ao(plist('built-in','mdc2r2_fd_ifo2ifo','index',1),pl); +% tf2 = ao(plist('built-in','mdc2r2_fd_ifo2ifo','index',3),pl); +% tf3 = ao(plist('built-in','mdc2r2_fd_ifo2ifo','index',4),pl); + +% matched stiffness case +% +% plx = pset(pl,param('wp1',0.00154919*i)) % sqrt(-24e-7) +% plx = pset(plx,param('wp2',0.00154919*i)) % sqrt(-24e-7) +% +% tf1x = ao(plist('built-in','mdc2r2_fd_ifo2ifo','index',1),plx); +% tf2x = ao(plist('built-in','mdc2r2_fd_ifo2ifo','index',3),plx); +% tf3x = ao(plist('built-in','mdc2r2_fd_ifo2ifo','index',4),plx); + + +a = ao(fsdata(f,(f'.^2).*ones(1,length(f)))); +a2 = ao(fsdata(f,(1./f'.^2).*ones(1,length(f)))); + +%% dispersion function + +disp = dispersion(a,plist('model','mdc2r2','channel','i1o1'),pl); +disp2 = dispersion(a2,plist('model','mdc2r2','channel','i1o1'),pl); + + +%% plot + +iplot(abs(tf1),disp,disp2) + +%% compute transfer function error + +noise_in = length(f)*fs/2*noise_param(f,7e-15,5e-3,3,4e-4,9) +noise_out = length(f)*fs/2*noise_param(f,3.6e-12,10e-3,4.2,1.8e-3,8) + + +varTF = disp.*(noise_in.*abs(tf1) + noise_out) +varTF.setName +varTF2 = disp2.*(noise_in.*abs(tf1) + noise_out) +varTF2.setName + +% iplot(abs(tf1),plist('YErrU',sqrt(varTF))) +iplot(abs(tf1),sqrt(varTF),sqrt(varTF2)) + +end + + +%-------------------------------------------------------------------------- +% Parametric function for noise contributions +%-------------------------------------------------------------------------- + +function o = noise_param(varargin) +f = varargin{1}; +p1 = varargin{2}; +p2 = varargin{3}; +p3 = varargin{4}; +p4 = varargin{5}; +p5 = varargin{6}; + +% Description of the noise +fcn = p1^2*(1 + 1./(f./p2).^p3 + 1./(f./p4).^p5).^(1/2) ; + +% Build AO from plist +o = ao(fsdata(f,fcn)); + + +end