diff m-toolbox/test/test_collection_linlsq.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_collection_linlsq.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,219 @@
+% test for ao/linlsq
+% 
+% 17-11-2009 L Ferraioli
+%       CREATION
+% 
+% 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% $Id: mdc3_exp3_loop_v3.m,v 1.2 2009/09/24 09:48:12 luigi Exp $
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%% Loading data
+
+fprintf('===== loading data... =====\n')
+
+% laod parnames and values
+load C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Models\parnames_10perc.mat
+load C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Models\exp3_2_10perc_nomvalues.mat
+load C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Models\exp3_2_10perc_truevalues.mat
+% load C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Models\usedparams_10perc.mat
+
+
+% set ordered used parameters
+usedparams = {'dH','dsH','dS11','dS1D','dSD1','dSDD',...
+  'dh2','dsh2','dx1','dx2'};
+
+[nonfitparnms,ia,ib] = setxor(parnames,usedparams);
+nonfitparvals = exp3_nomvalues(ia);
+
+%% get non-linear response model
+% the model is non-linear in the parameter dependence
+fprintf('===== Get TF Model... =====\n')
+
+H = matrix(plist('built-in','mdc3_ifo2ifo_v2'));
+
+%% load input signal
+% those are the same of exp 1
+
+fprintf('===== Loading input signals... =====\n')
+
+oi1 = ao('C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\signals_noise\exp1_1_oi1.mat');
+oi1.setName;
+oi1.setYunits('m');
+oid = ao('C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\signals_noise\exp1_2_oid.mat');
+oid.setName;
+oid.setYunits('m');
+
+%% get signals - true values
+
+fprintf('===== get true values... =====\n')
+
+% get response with true params
+for ii = 1:numel(H.objs)
+  H.objs(ii).setParams(parnames,exp3_truevalues);
+end
+
+plfft = plist('Npad',[]);
+
+s11 = fftfilt(oi1,H.objs(1,1),plfft);
+s12 = fftfilt(oid,H.objs(1,2),plfft);
+s21 = fftfilt(oi1,H.objs(2,1),plfft);
+s22 = fftfilt(oid,H.objs(2,2),plfft);
+
+% get signals for exp 3.1
+s1_exp_3_1 = s11;
+s1_exp_3_1.setName;
+sd_exp_3_1 = s21;
+sd_exp_3_1.setName;
+
+% get signals for exp 3.2
+s1_exp_3_2 = s12;
+s1_exp_3_2.setName;
+sd_exp_3_2 = s22;
+sd_exp_3_2.setName;
+
+%% load Coloring filters
+
+fprintf('===== loading coloring filters... =====\n')
+
+cf11 = miir('C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Filters\exp1_CF11.mat');
+cf11.setName;
+cf12 = miir('C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Filters\exp1_CF12.mat');
+cf12.setName;
+cf21 = miir('C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Filters\exp1_CF21.mat');
+cf21.setName;
+cf22 = miir('C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Filters\exp1_CF22.mat');
+cf22.setName;
+
+%% load Whitening filters
+
+fprintf('===== loading whitening filters... =====\n')
+
+wf11 = miir('C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Filters\exp1_WF11.mat');
+wf11.setName;
+wf12 = miir('C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Filters\exp1_WF12.mat');
+wf12.setName;
+wf21 = miir('C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Filters\exp1_WF21.mat');
+wf21.setName;
+wf22 = miir('C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\Filters\exp1_WF22.mat');
+wf22.setName;
+
+%% Adding noise to signals
+
+fprintf('===== adding noise to signals... =====\n')
+
+% get params
+Nsecs = s1_exp_3_1.nsecs;
+fs    = s1_exp_3_1.fs;
+plcf = plist('bank','parallel');
+
+% starting noise generation exp1.1
+a1_exp_3_1 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', Nsecs));
+a2_exp_3_1 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', Nsecs));
+
+% coloring noise exp 1.1
+na1_exp_3_1 = filter(a1_exp_3_1,cf11,plcf) + filter(a2_exp_3_1,cf12,plcf);
+na2_exp_3_1 = filter(a1_exp_3_1,cf21,plcf) + filter(a2_exp_3_1,cf22,plcf);
+
+% starting noise generation exp 1.2
+a1_exp_3_2 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', Nsecs));
+a2_exp_3_2 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', Nsecs));
+
+% coloring noise exp 1.2
+na1_exp_3_2 = filter(a1_exp_3_2,cf11,plcf) + filter(a2_exp_3_2,cf12,plcf);
+na2_exp_3_2 = filter(a1_exp_3_2,cf21,plcf) + filter(a2_exp_3_2,cf22,plcf);
+
+% adding noise to signals
+o1_exp_3_1 = s1_exp_3_1 + na1_exp_3_1;
+od_exp_3_1 = sd_exp_3_1 + na2_exp_3_1;
+
+o1_exp_3_2 = s1_exp_3_2 + na1_exp_3_2;
+od_exp_3_2 = sd_exp_3_2 + na2_exp_3_2;
+
+% %%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%% Test on one dimensional data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 
+% %% Build input collection
+% 
+% H11 = H.objs(1,1);
+% H11.setParams(parnames,exp3_nomvalues);
+% % subs for non fit parameters
+% H11.subs(plist('Params', nonfitparnms, 'Values',nonfitparvals));
+% % linearize
+% dH11 = linearize(H11);
+% 
+% H22 = H.objs(2,2);
+% H22.setParams(parnames,exp3_nomvalues);
+% % subs for non fit parameters
+% H22.subs(plist('Params', nonfitparnms, 'Values',nonfitparvals));
+% % linearize
+% dH22 = linearize(H22);
+% 
+% %%
+% iC1 = collection(o1_exp_3_1,s1_exp_3_1,H11,dH11,wf11);
+% iC2 = collection(od_exp_3_1,sd_exp_3_1,H22,dH22,wf22);
+% 
+% oC = linlsq(iC1,iC2,plist('Nloops',3));
+
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Test on two dimensional data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Build input collection
+
+% empty ao
+eao = ao();
+
+% subs for non fit parameters
+for ii=1:numel(H.objs)
+  H.objs(ii).setParams(parnames,exp3_nomvalues);
+  % subs for non fit parameters
+  H.objs(ii).subs(plist('Params', nonfitparnms, 'Values',nonfitparvals));
+end
+% linearize
+dH = linearize(H);
+
+% whitening filter
+wf11b = filterbank(plist('filters',wf11,'type','parallel'));
+wf11b.setName('wf11');
+wf12b = filterbank(plist('filters',wf12,'type','parallel'));
+wf12b.setName('wf12');
+wf21b = filterbank(plist('filters',wf21,'type','parallel'));
+wf21b.setName('wf21');
+wf22b = filterbank(plist('filters',wf22,'type','parallel'));
+wf22b.setName('wf22');
+
+WF = matrix(wf11b,wf21b,wf12b,wf22b,plist('shape',[2 2]));
+
+% exp_3_1
+os1 = matrix(o1_exp_3_1,od_exp_3_1,plist('shape',[2 1]));
+is1 = matrix(oi1,eao,plist('shape',[2 1]));
+
+% exp_3_2
+os2 = matrix(o1_exp_3_2,od_exp_3_2,plist('shape',[2 1]));
+is2 = matrix(eao,oid,plist('shape',[2 1]));
+
+iC1 = collection(os1,is1,H,dH,WF);
+iC2 = collection(os2,is2,H,dH,WF);
+
+%% add on ground experiments
+
+dS11 = ao(cdata(0));
+dS11.setName;
+dS11.setDy(1e-4);
+
+dS1D = ao(cdata(0));
+dS1D.setName;
+dS1D.setDy(1e-3);
+
+dSDD = ao(cdata(0));
+dSDD.setName;
+dSDD.setDy(1e-3);
+
+%% do fit
+
+oC = linlsq(iC1,iC2,dS11,dS1D,dSDD,plist('Nloops',1,'Npad',[]));