Mercurial > hg > ltpda
view m-toolbox/test/utils/test_linfitsvd_1.m @ 4:e3c5468b1bfe database-connection-manager
Integrate with LTPDAPreferences
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Mon, 05 Dec 2011 16:20:06 +0100 |
parents | f0afece42f48 |
children |
line wrap: on
line source
% test utils.math.linifitsvd % % 05-06-2009 L Ferraioli % CREATION % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % $Id: mdc3_exp3_loop_v3.m,v 1.2 2009/09/24 09:48:12 luigi Exp $ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Loading data % load cell arrays with parameters names and values 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','dh1','dsh1',... % 'dh2','dsh2','dx1','dx2'}; usedparams = {'dH','dsH','dS11','dS1D','dSD1','dSDD',... 'dh2','dsh2','dx1','dx2'}; %% 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; %% get non-linear response model % the model is non-linear in the parameter dependence fprintf('===== Get TF Model... =====\n') % H is a 2x2 matrix of smodels representing the transfer function from % controllers guidance to ifo output H = matrix(plist('built-in','mdc3_ifo2ifo_v2')); %% Get derivative models % those are derivatives of the model with respect to the parameters fprintf('===== Get derivative models... =====\n') % differentiate respect to the stiffness T_dH = copy(H,1); T_dsH = copy(H,1); T_dS11 = copy(H,1); T_dS1D = copy(H,1); T_dSD1 = copy(H,1); T_dSDD = copy(H,1); T_dh1 = copy(H,1); T_dsh1 = copy(H,1); T_dh2 = copy(H,1); T_dsh2 = copy(H,1); T_dx1 = copy(H,1); T_dx2 = copy(H,1); % differentiate respect to the stiffness for ii = 1:numel(H.objs) T_dH.objs(ii) = diff(H.objs(ii),'dH'); T_dsH.objs(ii) = diff(H.objs(ii),'dsH'); T_dS11.objs(ii) = diff(H.objs(ii),'dS11'); T_dS1D.objs(ii) = diff(H.objs(ii),'dS1D'); T_dSD1.objs(ii) = diff(H.objs(ii),'dSD1'); T_dSDD.objs(ii) = diff(H.objs(ii),'dSDD'); T_dh1.objs(ii) = diff(H.objs(ii),'dh1'); T_dsh1.objs(ii) = diff(H.objs(ii),'dsh1'); T_dh2.objs(ii) = diff(H.objs(ii),'dh2'); T_dsh2.objs(ii) = diff(H.objs(ii),'dsh2'); T_dx1.objs(ii) = diff(H.objs(ii),'dx1'); T_dx2.objs(ii) = diff(H.objs(ii),'dx2'); end %% *** Signals generation *** % ************************************************************************ % The output of each experiment is generated according to the following % scheme % i) generation of the output of the system to a given input % ii) generation of the output noise time series % iii) output signals and noise are added to get the final output signals % for each experiment % ************************************************************************ %% load input signal % load input data series in accordance to TN 3045 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') % calculate the response of the system for the first two experiments of TN % 3045 % Exp 3.1 input on first channel, no input on the differential channel % Exp 3.2 no input on the first channel, input on the differential channel % Output is always taken from both channels % get response with true params for ii = 1:numel(H.objs) H.objs(ii).setParams(parnames,exp3_truevalues); end s11 = fftfilt(oi1,H.objs(1,1)); s12 = fftfilt(oid,H.objs(1,2)); s21 = fftfilt(oi1,H.objs(2,1)); s22 = fftfilt(oid,H.objs(2,2)); % get output 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 output 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; %% 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, These signals are the output of our experiments 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; % %% plot % % iplot(o1_exp_3_1,plist('Legends', {'i1->o1'})) % iplot(od_exp_3_1,plist('Legends', {'i1->od'})) % iplot(o1_exp_3_2,plist('Legends', {'id->o1'})) % iplot(od_exp_3_2,plist('Legends', {'id->od'})) %% Run loop to get parameters % ************************************************************************ % The linear fit scheme is the following % % y - y0 = sum( p(dH/dp) ) % % y is the output data series % y0 is the calculated nominal response % dH/dp are derivatives of model with respect to parameters % p are the parameters % % If a whitening step is required it can be applied as: % % WF( y - y0 ) = WF( sum( p(dH/dp) ) ) % = sum( p WF( dH/dp ) ) % % ************************************************************************ % Fit loop for parameters extraction % % 1) Response of the derivatives of the model with respect to the % parameters is calculated according to the parameters nominal values. % These represent what I call, fit basis. % 2) Fit basis is whitened in order to consider the effect of the whitening % filter on data. % 3) Fit matrices are then built up from fit basis. % 4) Ground experiments results are input as additional information on some % parameters. % 5) Nominal system response is calculated. % 6) Nominal response is subtracted from output signals for the different % experiments. % 7) Whitening filter is applied to the difference y - y0. % 8) Linear fit is performed, information from different experiments and % ground experiments is joined to increase fit accuracy. % 9) The values of the parameters obtained are used to calculate a new set % of nominal values which are used in the following loop. % ************************************************************************ % run a loop to estimate system parameters fprintf('===== start loop iteration... =====\n') N = 1; % Number of iterations % f = logspace(-5,log10(fs/2),300).'; plcf = plist('bank','parallel'); % init storage struct mdc3_exp3_loop_results = struct('a',cell(1,N),... 'Ca',cell(1,N),... 'Corra',cell(1,N),... 'Vu',cell(1,N),... 'bu',cell(1,N),... 'Cbu',cell(1,N),... 'mse',cell(1,N),... 'params',cell(1,N)); % for ii = 1:N fprintf('===== iter %s =====\n',num2str(1)) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % get template fprintf('===== Get template - iter %s =====\n',num2str(1)) % set nominal values for jj = 1:numel(H.objs) T_dH.objs(jj).setParams(parnames,exp3_nomvalues); T_dsH.objs(jj).setParams(parnames,exp3_nomvalues); T_dS11.objs(jj).setParams(parnames,exp3_nomvalues); T_dS1D.objs(jj).setParams(parnames,exp3_nomvalues); T_dSD1.objs(jj).setParams(parnames,exp3_nomvalues); T_dSDD.objs(jj).setParams(parnames,exp3_nomvalues); T_dh1.objs(jj).setParams(parnames,exp3_nomvalues); T_dsh1.objs(jj).setParams(parnames,exp3_nomvalues); T_dh2.objs(jj).setParams(parnames,exp3_nomvalues); T_dsh2.objs(jj).setParams(parnames,exp3_nomvalues); T_dx1.objs(jj).setParams(parnames,exp3_nomvalues); T_dx2.objs(jj).setParams(parnames,exp3_nomvalues); end % get response for dH ds11 = fftfilt(oi1,T_dH.objs(1,1)); ds12 = fftfilt(oid,T_dH.objs(1,2)); ds21 = fftfilt(oi1,T_dH.objs(2,1)); ds22 = fftfilt(oid,T_dH.objs(2,2)); dH_1_exp_3_1 = ds11; dH_1_exp_3_1.setName; dH_12_exp_3_1 = ds21; dH_12_exp_3_1.setName; dH_1_exp_3_2 = ds12; dH_1_exp_3_2.setName; dH_12_exp_3_2 = ds22; dH_12_exp_3_2.setName; % get response for dsH ds11 = fftfilt(oi1,T_dsH.objs(1,1)); ds12 = fftfilt(oid,T_dsH.objs(1,2)); ds21 = fftfilt(oi1,T_dsH.objs(2,1)); ds22 = fftfilt(oid,T_dsH.objs(2,2)); dsH_1_exp_3_1 = ds11; dsH_1_exp_3_1.setName; dsH_12_exp_3_1 = ds21; dsH_12_exp_3_1.setName; dsH_1_exp_3_2 = ds12; dsH_1_exp_3_2.setName; dsH_12_exp_3_2 = ds22; dsH_12_exp_3_2.setName; % get response for dS11 ds11 = fftfilt(oi1,T_dS11.objs(1,1)); ds12 = fftfilt(oid,T_dS11.objs(1,2)); ds21 = fftfilt(oi1,T_dS11.objs(2,1)); ds22 = fftfilt(oid,T_dS11.objs(2,2)); dS11_1_exp_3_1 = ds11; dS11_1_exp_3_1.setName; dS11_12_exp_3_1 = ds21; dS11_12_exp_3_1.setName; dS11_1_exp_3_2 = ds12; dS11_1_exp_3_2.setName; dS11_12_exp_3_2 = ds22; dS11_12_exp_3_2.setName; % get response for dS1D ds11 = fftfilt(oi1,T_dS1D.objs(1,1)); ds12 = fftfilt(oid,T_dS1D.objs(1,2)); ds21 = fftfilt(oi1,T_dS1D.objs(2,1)); ds22 = fftfilt(oid,T_dS1D.objs(2,2)); dS1D_1_exp_3_1 = ds11; dS1D_1_exp_3_1.setName; dS1D_12_exp_3_1 = ds21; dS1D_12_exp_3_1.setName; dS1D_1_exp_3_2 = ds12; dS1D_1_exp_3_2.setName; dS1D_12_exp_3_2 = ds22; dS1D_12_exp_3_2.setName; % get response for SD1 ds11 = fftfilt(oi1,T_dSD1.objs(1,1)); ds12 = fftfilt(oid,T_dSD1.objs(1,2)); ds21 = fftfilt(oi1,T_dSD1.objs(2,1)); ds22 = fftfilt(oid,T_dSD1.objs(2,2)); dSD1_1_exp_3_1 = ds11; dSD1_1_exp_3_1.setName; dSD1_12_exp_3_1 = ds21; dSD1_12_exp_3_1.setName; dSD1_1_exp_3_2 = ds12; dSD1_1_exp_3_2.setName; dSD1_12_exp_3_2 = ds22; dSD1_12_exp_3_2.setName; % get response for SDD ds11 = fftfilt(oi1,T_dSDD.objs(1,1)); ds12 = fftfilt(oid,T_dSDD.objs(1,2)); ds21 = fftfilt(oi1,T_dSDD.objs(2,1)); ds22 = fftfilt(oid,T_dSDD.objs(2,2)); dSDD_1_exp_3_1 = ds11; dSDD_1_exp_3_1.setName; dSDD_12_exp_3_1 = ds21; dSDD_12_exp_3_1.setName; dSDD_1_exp_3_2 = ds12; dSDD_1_exp_3_2.setName; dSDD_12_exp_3_2 = ds22; dSDD_12_exp_3_2.setName; % get response for dh1 ds11 = fftfilt(oi1,T_dh1.objs(1,1)); ds12 = fftfilt(oid,T_dh1.objs(1,2)); ds21 = fftfilt(oi1,T_dh1.objs(2,1)); ds22 = fftfilt(oid,T_dh1.objs(2,2)); dh1_1_exp_3_1 = ds11; dh1_1_exp_3_1.setName; dh1_12_exp_3_1 = ds21; dh1_12_exp_3_1.setName; dh1_1_exp_3_2 = ds12; dh1_1_exp_3_2.setName; dh1_12_exp_3_2 = ds22; dh1_12_exp_3_2.setName; % get response for dsh1 ds11 = fftfilt(oi1,T_dsh1.objs(1,1)); ds12 = fftfilt(oid,T_dsh1.objs(1,2)); ds21 = fftfilt(oi1,T_dsh1.objs(2,1)); ds22 = fftfilt(oid,T_dsh1.objs(2,2)); dsh1_1_exp_3_1 = ds11; dsh1_1_exp_3_1.setName; dsh1_12_exp_3_1 = ds21; dsh1_12_exp_3_1.setName; dsh1_1_exp_3_2 = ds12; dsh1_1_exp_3_2.setName; dsh1_12_exp_3_2 = ds22; dsh1_12_exp_3_2.setName; % get response for dh2 ds11 = fftfilt(oi1,T_dh2.objs(1,1)); ds12 = fftfilt(oid,T_dh2.objs(1,2)); ds21 = fftfilt(oi1,T_dh2.objs(2,1)); ds22 = fftfilt(oid,T_dh2.objs(2,2)); dh2_1_exp_3_1 = ds11; dh2_1_exp_3_1.setName; dh2_12_exp_3_1 = ds21; dh2_12_exp_3_1.setName; dh2_1_exp_3_2 = ds12; dh2_1_exp_3_2.setName; dh2_12_exp_3_2 = ds22; dh2_12_exp_3_2.setName; % get response for dsh2 ds11 = fftfilt(oi1,T_dsh2.objs(1,1)); ds12 = fftfilt(oid,T_dsh2.objs(1,2)); ds21 = fftfilt(oi1,T_dsh2.objs(2,1)); ds22 = fftfilt(oid,T_dsh2.objs(2,2)); dsh2_1_exp_3_1 = ds11; dsh2_1_exp_3_1.setName; dsh2_12_exp_3_1 = ds21; dsh2_12_exp_3_1.setName; dsh2_1_exp_3_2 = ds12; dsh2_1_exp_3_2.setName; dsh2_12_exp_3_2 = ds22; dsh2_12_exp_3_2.setName; % get response for dx1 ds11 = fftfilt(oi1,T_dx1.objs(1,1)); ds12 = fftfilt(oid,T_dx1.objs(1,2)); ds21 = fftfilt(oi1,T_dx1.objs(2,1)); ds22 = fftfilt(oid,T_dx1.objs(2,2)); dx1_1_exp_3_1 = ds11; dx1_1_exp_3_1.setName; dx1_12_exp_3_1 = ds21; dx1_12_exp_3_1.setName; dx1_1_exp_3_2 = ds12; dx1_1_exp_3_2.setName; dx1_12_exp_3_2 = ds22; dx1_12_exp_3_2.setName; % get response for dx2 ds11 = fftfilt(oi1,T_dx2.objs(1,1)); ds12 = fftfilt(oid,T_dx2.objs(1,2)); ds21 = fftfilt(oi1,T_dx2.objs(2,1)); ds22 = fftfilt(oid,T_dx2.objs(2,2)); dx2_1_exp_3_1 = ds11; dx2_1_exp_3_1.setName; dx2_12_exp_3_1 = ds21; dx2_12_exp_3_1.setName; dx2_1_exp_3_2 = ds12; dx2_1_exp_3_2.setName; dx2_12_exp_3_2 = ds22; dx2_12_exp_3_2.setName; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % do whitening on template fprintf('===== do whitening on template - iter %s =====\n',num2str(1)) plwf = plist('bank','parallel'); dH_1w_exp_3_1 = filter(dH_1_exp_3_1,wf11,plwf) + filter(dH_12_exp_3_1,wf12,plwf); dH_12w_exp_3_1 = filter(dH_1_exp_3_1,wf21,plwf) + filter(dH_12_exp_3_1,wf22,plwf); dsH_1w_exp_3_1 = filter(dsH_1_exp_3_1,wf11,plwf) + filter(dsH_12_exp_3_1,wf12,plwf); dsH_12w_exp_3_1 = filter(dsH_1_exp_3_1,wf21,plwf) + filter(dsH_12_exp_3_1,wf22,plwf); dS11_1w_exp_3_1 = filter(dS11_1_exp_3_1,wf11,plwf) + filter(dS11_12_exp_3_1,wf12,plwf); dS11_12w_exp_3_1 = filter(dS11_1_exp_3_1,wf21,plwf) + filter(dS11_12_exp_3_1,wf22,plwf); dS1D_1w_exp_3_1 = filter(dS1D_1_exp_3_1,wf11,plwf) + filter(dS1D_12_exp_3_1,wf12,plwf); dS1D_12w_exp_3_1 = filter(dS1D_1_exp_3_1,wf21,plwf) + filter(dS1D_12_exp_3_1,wf22,plwf); dSD1_1w_exp_3_1 = filter(dSD1_1_exp_3_1,wf11,plwf) + filter(dSD1_12_exp_3_1,wf12,plwf); dSD1_12w_exp_3_1 = filter(dSD1_1_exp_3_1,wf21,plwf) + filter(dSD1_12_exp_3_1,wf22,plwf); dSDD_1w_exp_3_1 = filter(dSDD_1_exp_3_1,wf11,plwf) + filter(dSDD_12_exp_3_1,wf12,plwf); dSDD_12w_exp_3_1 = filter(dSDD_1_exp_3_1,wf21,plwf) + filter(dSDD_12_exp_3_1,wf22,plwf); dh1_1w_exp_3_1 = filter(dh1_1_exp_3_1,wf11,plwf) + filter(dh1_12_exp_3_1,wf12,plwf); dh1_12w_exp_3_1 = filter(dh1_1_exp_3_1,wf21,plwf) + filter(dh1_12_exp_3_1,wf22,plwf); dsh1_1w_exp_3_1 = filter(dsh1_1_exp_3_1,wf11,plwf) + filter(dsh1_12_exp_3_1,wf12,plwf); dsh1_12w_exp_3_1 = filter(dsh1_1_exp_3_1,wf21,plwf) + filter(dsh1_12_exp_3_1,wf22,plwf); dh2_1w_exp_3_1 = filter(dh2_1_exp_3_1,wf11,plwf) + filter(dh2_12_exp_3_1,wf12,plwf); dh2_12w_exp_3_1 = filter(dh2_1_exp_3_1,wf21,plwf) + filter(dh2_12_exp_3_1,wf22,plwf); dsh2_1w_exp_3_1 = filter(dsh2_1_exp_3_1,wf11,plwf) + filter(dsh2_12_exp_3_1,wf12,plwf); dsh2_12w_exp_3_1 = filter(dsh2_1_exp_3_1,wf21,plwf) + filter(dsh2_12_exp_3_1,wf22,plwf); dx1_1w_exp_3_1 = filter(dx1_1_exp_3_1,wf11,plwf) + filter(dx1_12_exp_3_1,wf12,plwf); dx1_12w_exp_3_1 = filter(dx1_1_exp_3_1,wf21,plwf) + filter(dx1_12_exp_3_1,wf22,plwf); dx2_1w_exp_3_1 = filter(dx2_1_exp_3_1,wf11,plwf) + filter(dx2_12_exp_3_1,wf12,plwf); dx2_12w_exp_3_1 = filter(dx2_1_exp_3_1,wf21,plwf) + filter(dx2_12_exp_3_1,wf22,plwf); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% dH_1w_exp_3_2 = filter(dH_1_exp_3_2,wf11,plwf) + filter(dH_12_exp_3_2,wf12,plwf); dH_12w_exp_3_2 = filter(dH_1_exp_3_2,wf21,plwf) + filter(dH_12_exp_3_2,wf22,plwf); dsH_1w_exp_3_2 = filter(dsH_1_exp_3_2,wf11,plwf) + filter(dsH_12_exp_3_2,wf12,plwf); dsH_12w_exp_3_2 = filter(dsH_1_exp_3_2,wf21,plwf) + filter(dsH_12_exp_3_2,wf22,plwf); dS11_1w_exp_3_2 = filter(dS11_1_exp_3_2,wf11,plwf) + filter(dS11_12_exp_3_2,wf12,plwf); dS11_12w_exp_3_2 = filter(dS11_1_exp_3_2,wf21,plwf) + filter(dS11_12_exp_3_2,wf22,plwf); dS1D_1w_exp_3_2 = filter(dS1D_1_exp_3_2,wf11,plwf) + filter(dS1D_12_exp_3_2,wf12,plwf); dS1D_12w_exp_3_2 = filter(dS1D_1_exp_3_2,wf21,plwf) + filter(dS1D_12_exp_3_2,wf22,plwf); dSD1_1w_exp_3_2 = filter(dSD1_1_exp_3_2,wf11,plwf) + filter(dSD1_12_exp_3_2,wf12,plwf); dSD1_12w_exp_3_2 = filter(dSD1_1_exp_3_2,wf21,plwf) + filter(dSD1_12_exp_3_2,wf22,plwf); dSDD_1w_exp_3_2 = filter(dSDD_1_exp_3_2,wf11,plwf) + filter(dSDD_12_exp_3_2,wf12,plwf); dSDD_12w_exp_3_2 = filter(dSDD_1_exp_3_2,wf21,plwf) + filter(dSDD_12_exp_3_2,wf22,plwf); dh1_1w_exp_3_2 = filter(dh1_1_exp_3_2,wf11,plwf) + filter(dh1_12_exp_3_2,wf12,plwf); dh1_12w_exp_3_2 = filter(dh1_1_exp_3_2,wf21,plwf) + filter(dh1_12_exp_3_2,wf22,plwf); dsh1_1w_exp_3_2 = filter(dsh1_1_exp_3_2,wf11,plwf) + filter(dsh1_12_exp_3_2,wf12,plwf); dsh1_12w_exp_3_2 = filter(dsh1_1_exp_3_2,wf21,plwf) + filter(dsh1_12_exp_3_2,wf22,plwf); dh2_1w_exp_3_2 = filter(dh2_1_exp_3_2,wf11,plwf) + filter(dh2_12_exp_3_2,wf12,plwf); dh2_12w_exp_3_2 = filter(dh2_1_exp_3_2,wf21,plwf) + filter(dh2_12_exp_3_2,wf22,plwf); dsh2_1w_exp_3_2 = filter(dsh2_1_exp_3_2,wf11,plwf) + filter(dsh2_12_exp_3_2,wf12,plwf); dsh2_12w_exp_3_2 = filter(dsh2_1_exp_3_2,wf21,plwf) + filter(dsh2_12_exp_3_2,wf22,plwf); dx1_1w_exp_3_2 = filter(dx1_1_exp_3_2,wf11,plwf) + filter(dx1_12_exp_3_2,wf12,plwf); dx1_12w_exp_3_2 = filter(dx1_1_exp_3_2,wf21,plwf) + filter(dx1_12_exp_3_2,wf22,plwf); dx2_1w_exp_3_2 = filter(dx2_1_exp_3_2,wf11,plwf) + filter(dx2_12_exp_3_2,wf12,plwf); dx2_12w_exp_3_2 = filter(dx2_1_exp_3_2,wf21,plwf) + filter(dx2_12_exp_3_2,wf22,plwf); %%% Build fit matrices %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf('===== Build fit matrices - iter %s =====\n',num2str(1)) % init data struct exps = struct(); % exp 3.1 ch1 dHw_exp_3_1 = [dH_1w_exp_3_1.y]; dsHw_exp_3_1 = [dsH_1w_exp_3_1.y]; dS11w_exp_3_1 = [dS11_1w_exp_3_1.y]; dS1Dw_exp_3_1 = [dS1D_1w_exp_3_1.y]; dSD1w_exp_3_1 = [dSD1_1w_exp_3_1.y]; dSDDw_exp_3_1 = [dSDD_1w_exp_3_1.y]; dh1w_exp_3_1 = [dh1_1w_exp_3_1.y]; dsh1w_exp_3_1 = [dsh1_1w_exp_3_1.y]; dh2w_exp_3_1 = [dh2_1w_exp_3_1.y]; dsh2w_exp_3_1 = [dsh2_1w_exp_3_1.y]; dx1w_exp_3_1 = [dx1_1w_exp_3_1.y]; dx2w_exp_3_1 = [dx2_1w_exp_3_1.y]; K1_exp_3_1 = [dHw_exp_3_1 dsHw_exp_3_1 dS11w_exp_3_1 dS1Dw_exp_3_1... dSD1w_exp_3_1 dSDDw_exp_3_1... dh2w_exp_3_1 dsh2w_exp_3_1 dx1w_exp_3_1 dx2w_exp_3_1]; % cut the first 100 samples to remove WF transients effects K1_exp_3_1(1:100,:) = []; % fill struct basis exps(1).fitbasis = K1_exp_3_1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % exp 3.1 ch12 dHw_exp_3_1 = [dH_12w_exp_3_1.y]; dsHw_exp_3_1 = [dsH_12w_exp_3_1.y]; dS11w_exp_3_1 = [dS11_12w_exp_3_1.y]; dS1Dw_exp_3_1 = [dS1D_12w_exp_3_1.y]; dSD1w_exp_3_1 = [dSD1_12w_exp_3_1.y]; dSDDw_exp_3_1 = [dSDD_12w_exp_3_1.y]; dh1w_exp_3_1 = [dh1_12w_exp_3_1.y]; dsh1w_exp_3_1 = [dsh1_12w_exp_3_1.y]; dh2w_exp_3_1 = [dh2_12w_exp_3_1.y]; dsh2w_exp_3_1 = [dsh2_12w_exp_3_1.y]; dx1w_exp_3_1 = [dx1_12w_exp_3_1.y]; dx2w_exp_3_1 = [dx2_12w_exp_3_1.y]; K12_exp_3_1 = [dHw_exp_3_1 dsHw_exp_3_1 dS11w_exp_3_1 dS1Dw_exp_3_1... dSD1w_exp_3_1 dSDDw_exp_3_1... dh2w_exp_3_1 dsh2w_exp_3_1 dx1w_exp_3_1 dx2w_exp_3_1]; clear dHw_exp_3_1 dsHw_exp_3_1 dS11w_exp_3_1 dS1Dw_exp_3_1 dSD1w_exp_3_1... dSDDw_exp_3_1 dh1w_exp_3_1 dsh1w_exp_3_1 dh2w_exp_3_1 dsh2w_exp_3_1... dx1w_exp_3_1 dx2w_exp_3_1 % cut the first 100 samples to remove WF transients effects K12_exp_3_1(1:100,:) = []; % fill struct basis exps(2).fitbasis = K12_exp_3_1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % exp 3.2 ch1 dHw_exp_3_2 = [dH_1w_exp_3_2.y]; dsHw_exp_3_2 = [dsH_1w_exp_3_2.y]; dS11w_exp_3_2 = [dS11_1w_exp_3_2.y]; dS1Dw_exp_3_2 = [dS1D_1w_exp_3_2.y]; dSD1w_exp_3_2 = [dSD1_1w_exp_3_2.y]; dSDDw_exp_3_2 = [dSDD_1w_exp_3_2.y]; dh1w_exp_3_2 = [dh1_1w_exp_3_2.y]; dsh1w_exp_3_2 = [dsh1_1w_exp_3_2.y]; dh2w_exp_3_2 = [dh2_1w_exp_3_2.y]; dsh2w_exp_3_2 = [dsh2_1w_exp_3_2.y]; dx1w_exp_3_2 = [dx1_1w_exp_3_2.y]; dx2w_exp_3_2 = [dx2_1w_exp_3_2.y]; K1_exp_3_2 = [dHw_exp_3_2 dsHw_exp_3_2 dS11w_exp_3_2 dS1Dw_exp_3_2... dSD1w_exp_3_2 dSDDw_exp_3_2... dh2w_exp_3_2 dsh2w_exp_3_2 dx1w_exp_3_2 dx2w_exp_3_2]; % cut the first 100 samples to remove WF transients effects K1_exp_3_2(1:100,:) = []; % fill struct basis exps(3).fitbasis = K1_exp_3_2; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % exp 3.2 ch12 dHw_exp_3_2 = [dH_12w_exp_3_2.y]; dsHw_exp_3_2 = [dsH_12w_exp_3_2.y]; dS11w_exp_3_2 = [dS11_12w_exp_3_2.y]; dS1Dw_exp_3_2 = [dS1D_12w_exp_3_2.y]; dSD1w_exp_3_2 = [dSD1_12w_exp_3_2.y]; dSDDw_exp_3_2 = [dSDD_12w_exp_3_2.y]; dh1w_exp_3_2 = [dh1_12w_exp_3_2.y]; dsh1w_exp_3_2 = [dsh1_12w_exp_3_2.y]; dh2w_exp_3_2 = [dh2_12w_exp_3_2.y]; dsh2w_exp_3_2 = [dsh2_12w_exp_3_2.y]; dx1w_exp_3_2 = [dx1_12w_exp_3_2.y]; dx2w_exp_3_2 = [dx2_12w_exp_3_2.y]; K12_exp_3_2 = [dHw_exp_3_2 dsHw_exp_3_2 dS11w_exp_3_2 dS1Dw_exp_3_2... dSD1w_exp_3_2 dSDDw_exp_3_2... dh2w_exp_3_2 dsh2w_exp_3_2 dx1w_exp_3_2 dx2w_exp_3_2]; clear dHw_exp_3_2 dsHw_exp_3_2 dS11w_exp_3_2 dS1Dw_exp_3_2... dSD1w_exp_3_2 dSDDw_exp_3_2 dh1w_exp_3_2 dsh1w_exp_3_2... dh2w_exp_3_2 dsh2w_exp_3_2 dx1w_exp_3_2 dx2w_exp_3_2 % cut the first 100 samples to remove WF transients effects K12_exp_3_2(1:100,:) = []; % fill struct basis exps(4).fitbasis = K12_exp_3_2; %%% Input on groud measured parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf('===== Input on-groud measured parameters - iter %s =====\n',num2str(1)) % init struct groundexps = struct; % value for S11 groundexps(1).pos = 3; groundexps(1).value = 0; groundexps(1).err = 1e-4; % value for S1D groundexps(2).pos = 4; groundexps(2).value = 0; groundexps(2).err = 1e-3; % value for SDD groundexps(3).pos = 6; groundexps(3).value = 0; groundexps(3).err = 1e-4; %%% Get signals with nominal params %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf('===== Get signals with nominal params - iter %s =====\n',num2str(1)) % get response with nominal params for kk = 1:numel(H.objs) H.objs(kk).setParams(parnames,exp3_nomvalues); end s11 = fftfilt(oi1,H.objs(1,1)); s12 = fftfilt(oid,H.objs(1,2)); s21 = fftfilt(oi1,H.objs(2,1)); s22 = fftfilt(oid,H.objs(2,2)); % get signals for exp 3.1 ns1_exp_3_1 = s11; ns1_exp_3_1.setName; nsd_exp_3_1 = s21; nsd_exp_3_1.setName; % get signals for exp 3.2 ns1_exp_3_2 = s12; ns1_exp_3_2.setName; nsd_exp_3_2 = s22; nsd_exp_3_2.setName; % subtract nominal response from true signals do1_exp_3_1 = o1_exp_3_1 - ns1_exp_3_1; dod_exp_3_1 = od_exp_3_1 - nsd_exp_3_1; do1_exp_3_2 = o1_exp_3_2 - ns1_exp_3_2; dod_exp_3_2 = od_exp_3_2 - nsd_exp_3_2; % do whitening o1w_exp_3_1 = filter(do1_exp_3_1,wf11,plcf) + filter(dod_exp_3_1,wf12,plcf); odw_exp_3_1 = filter(do1_exp_3_1,wf21,plcf) + filter(dod_exp_3_1,wf22,plcf); o1w_exp_3_2 = filter(do1_exp_3_2,wf11,plcf) + filter(dod_exp_3_2,wf12,plcf); odw_exp_3_2 = filter(do1_exp_3_2,wf21,plcf) + filter(dod_exp_3_2,wf22,plcf); %%% Build fit vectors %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% o1w_exp_3_1 = o1w_exp_3_1.y; % cut the first 100 samples to remove WF transients effects o1w_exp_3_1(1:100,:) = []; exps(1).fitdata = o1w_exp_3_1; odw_exp_3_1 = odw_exp_3_1.y; % cut the first 100 samples to remove WF transients effects odw_exp_3_1(1:100,:) = []; exps(2).fitdata = odw_exp_3_1; o1w_exp_3_2 = o1w_exp_3_2.y; % cut the first 100 samples to remove WF transients effects o1w_exp_3_2(1:100,:) = []; exps(3).fitdata = o1w_exp_3_2; odw_exp_3_2 = odw_exp_3_2.y; % cut the first 100 samples to remove WF transients effects odw_exp_3_2(1:100,:) = []; exps(4).fitdata = odw_exp_3_2; %%% do fit %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf('===== Do fit - iter %s =====\n',num2str(1)) % [a,Ca,eCa,Corra,eCorra,Vu,bu,Cbu,eCbu,mse] = mdc3_exp1_linfit_v2(exps,groundexps); [a,Ca,Corra,Vu,bu,Cbu,Fbu,mse] = utils.math.linfitsvd(exps,groundexps); % store results mdc3_exp3_loop_results(1).a = a; mdc3_exp3_loop_results(1).Ca = Ca; % mdc3_exp3_loop_results(1).eCa = eCa; mdc3_exp3_loop_results(1).Corra = Corra; % mdc3_exp3_loop_results(1).eCorra = eCorra; mdc3_exp3_loop_results(1).Vu = Vu; mdc3_exp3_loop_results(1).bu = bu; mdc3_exp3_loop_results(1).Cbu = Cbu; % mdc3_exp3_loop_results(1).eCbu = eCbu; mdc3_exp3_loop_results(1).mse = mse; % update nominal values with fit result for kk=1:numel(usedparams) for dd=1:numel(parnames) if strcmp(usedparams{kk},parnames{dd}) exp3_nomvalues{dd} = exp3_nomvalues{dd} + a(kk); end end end % store parameter estimation mdc3_exp3_loop_results(1).params = exp3_nomvalues; % end % %% save results % % % get date string % str = date; % % write filename % filenm = sprintf('mdc3_exp3_loop_results_%s.mat',str); % % save % save(['C:\Users\Luigi\ltp_data_analysis\MDCs\MDC3\lf_analysis\MDC3_Exp3\' filenm], 'mdc3_exp3_loop_results') % %% MSE progression mseprog = zeros(N,1); for ii=1:N mseprog(ii) = mdc3_exp3_loop_results(ii).mse; end figure plot(mseprog,'*-') xlabel('Fit Step') ylabel('Meam Square Error') % % %% Get params % % fit_vals = zeros(numel(usedparams),1); % true_vals = zeros(numel(usedparams),1); % pars = mdc3_exp3_loop_results(N).params; % % % for ii=1:numel(usedparams) % for jj=1:numel(parnames) % if strcmp(usedparams{ii},parnames{jj}) % fit_vals(ii) = pars{jj}; % true_vals(ii) = exp3_truevalues{jj}; % end % end % end % % %% Testing % % % input true values % dH = true_vals(1); % dsH = true_vals(2); % dS11 = true_vals(3); % dS1D = true_vals(4); % dSD1 = true_vals(5); % dSDD = true_vals(6); % dh1 = true_vals(7); % dsh1 = true_vals(8); % dh2 = true_vals(9); % dsh2 = true_vals(10); % dx1 = true_vals(11); % dx2 = true_vals(12); % % % % load nominal and true values % 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 % % % %%% get response with true params % for ii = 1:numel(H.objs) % H.objs(ii).setParams(parnames,exp3_truevalues); % end % % s11 = fftfilt(oi1,H.objs(1,1)); % s12 = fftfilt(oid,H.objs(1,2)); % s21 = fftfilt(oi1,H.objs(2,1)); % s22 = fftfilt(oid,H.objs(2,2)); % % % 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; % % %%% get response with nominal params % for kk = 1:numel(H.objs) % H.objs(kk).setParams(parnames,exp3_nomvalues); % end % % s11 = fftfilt(oi1,H.objs(1,1)); % s12 = fftfilt(oid,H.objs(1,2)); % s21 = fftfilt(oi1,H.objs(2,1)); % s22 = fftfilt(oid,H.objs(2,2)); % % % get signals for exp 3.1 % ns1_exp_3_1 = s11; % ns1_exp_3_1.setName; % nsd_exp_3_1 = s21; % nsd_exp_3_1.setName; % % % get signals for exp 3.2 % ns1_exp_3_2 = s12; % ns1_exp_3_2.setName; % nsd_exp_3_2 = s22; % nsd_exp_3_2.setName; % % % subtract template from true signals % ds1_exp_3_1 = s1_exp_3_1 - ns1_exp_3_1; % dsd_exp_3_1 = sd_exp_3_1 - nsd_exp_3_1; % % ds1_exp_3_2 = s1_exp_3_2 - ns1_exp_3_2; % dsd_exp_3_2 = sd_exp_3_2 - nsd_exp_3_2; % % %%% Get fit basis % % % set nominal values % for jj = 1:numel(H.objs) % T_dH.objs(jj).setParams(parnames,exp3_nomvalues); % T_dsH.objs(jj).setParams(parnames,exp3_nomvalues); % T_dS11.objs(jj).setParams(parnames,exp3_nomvalues); % T_dS1D.objs(jj).setParams(parnames,exp3_nomvalues); % T_dSD1.objs(jj).setParams(parnames,exp3_nomvalues); % T_dSDD.objs(jj).setParams(parnames,exp3_nomvalues); % T_dh1.objs(jj).setParams(parnames,exp3_nomvalues); % T_dsh1.objs(jj).setParams(parnames,exp3_nomvalues); % T_dh2.objs(jj).setParams(parnames,exp3_nomvalues); % T_dsh2.objs(jj).setParams(parnames,exp3_nomvalues); % T_dx1.objs(jj).setParams(parnames,exp3_nomvalues); % T_dx2.objs(jj).setParams(parnames,exp3_nomvalues); % end % % % get response for dH % ds11 = fftfilt(oi1,T_dH.objs(1,1)); % ds12 = fftfilt(oid,T_dH.objs(1,2)); % ds21 = fftfilt(oi1,T_dH.objs(2,1)); % ds22 = fftfilt(oid,T_dH.objs(2,2)); % % dH_1_exp_3_1 = ds11; % dH_1_exp_3_1.setName; % dH_12_exp_3_1 = ds21; % dH_12_exp_3_1.setName; % dH_1_exp_3_2 = ds12; % dH_1_exp_3_2.setName; % dH_12_exp_3_2 = ds22; % dH_12_exp_3_2.setName; % % % get response for dsH % ds11 = fftfilt(oi1,T_dsH.objs(1,1)); % ds12 = fftfilt(oid,T_dsH.objs(1,2)); % ds21 = fftfilt(oi1,T_dsH.objs(2,1)); % ds22 = fftfilt(oid,T_dsH.objs(2,2)); % % dsH_1_exp_3_1 = ds11; % dsH_1_exp_3_1.setName; % dsH_12_exp_3_1 = ds21; % dsH_12_exp_3_1.setName; % dsH_1_exp_3_2 = ds12; % dsH_1_exp_3_2.setName; % dsH_12_exp_3_2 = ds22; % dsH_12_exp_3_2.setName; % % % get response for dS11 % ds11 = fftfilt(oi1,T_dS11.objs(1,1)); % ds12 = fftfilt(oid,T_dS11.objs(1,2)); % ds21 = fftfilt(oi1,T_dS11.objs(2,1)); % ds22 = fftfilt(oid,T_dS11.objs(2,2)); % % dS11_1_exp_3_1 = ds11; % dS11_1_exp_3_1.setName; % dS11_12_exp_3_1 = ds21; % dS11_12_exp_3_1.setName; % dS11_1_exp_3_2 = ds12; % dS11_1_exp_3_2.setName; % dS11_12_exp_3_2 = ds22; % dS11_12_exp_3_2.setName; % % % get response for dS1D % ds11 = fftfilt(oi1,T_dS1D.objs(1,1)); % ds12 = fftfilt(oid,T_dS1D.objs(1,2)); % ds21 = fftfilt(oi1,T_dS1D.objs(2,1)); % ds22 = fftfilt(oid,T_dS1D.objs(2,2)); % % dS1D_1_exp_3_1 = ds11; % dS1D_1_exp_3_1.setName; % dS1D_12_exp_3_1 = ds21; % dS1D_12_exp_3_1.setName; % dS1D_1_exp_3_2 = ds12; % dS1D_1_exp_3_2.setName; % dS1D_12_exp_3_2 = ds22; % dS1D_12_exp_3_2.setName; % % % % get response for SD1 % ds11 = fftfilt(oi1,T_dSD1.objs(1,1)); % ds12 = fftfilt(oid,T_dSD1.objs(1,2)); % ds21 = fftfilt(oi1,T_dSD1.objs(2,1)); % ds22 = fftfilt(oid,T_dSD1.objs(2,2)); % % dSD1_1_exp_3_1 = ds11; % dSD1_1_exp_3_1.setName; % dSD1_12_exp_3_1 = ds21; % dSD1_12_exp_3_1.setName; % dSD1_1_exp_3_2 = ds12; % dSD1_1_exp_3_2.setName; % dSD1_12_exp_3_2 = ds22; % dSD1_12_exp_3_2.setName; % % % get response for SDD % ds11 = fftfilt(oi1,T_dSDD.objs(1,1)); % ds12 = fftfilt(oid,T_dSDD.objs(1,2)); % ds21 = fftfilt(oi1,T_dSDD.objs(2,1)); % ds22 = fftfilt(oid,T_dSDD.objs(2,2)); % % dSDD_1_exp_3_1 = ds11; % dSDD_1_exp_3_1.setName; % dSDD_12_exp_3_1 = ds21; % dSDD_12_exp_3_1.setName; % dSDD_1_exp_3_2 = ds12; % dSDD_1_exp_3_2.setName; % dSDD_12_exp_3_2 = ds22; % dSDD_12_exp_3_2.setName; % % % get response for dh1 % ds11 = fftfilt(oi1,T_dh1.objs(1,1)); % ds12 = fftfilt(oid,T_dh1.objs(1,2)); % ds21 = fftfilt(oi1,T_dh1.objs(2,1)); % ds22 = fftfilt(oid,T_dh1.objs(2,2)); % % dh1_1_exp_3_1 = ds11; % dh1_1_exp_3_1.setName; % dh1_12_exp_3_1 = ds21; % dh1_12_exp_3_1.setName; % dh1_1_exp_3_2 = ds12; % dh1_1_exp_3_2.setName; % dh1_12_exp_3_2 = ds22; % dh1_12_exp_3_2.setName; % % % get response for dsh1 % ds11 = fftfilt(oi1,T_dsh1.objs(1,1)); % ds12 = fftfilt(oid,T_dsh1.objs(1,2)); % ds21 = fftfilt(oi1,T_dsh1.objs(2,1)); % ds22 = fftfilt(oid,T_dsh1.objs(2,2)); % % dsh1_1_exp_3_1 = ds11; % dsh1_1_exp_3_1.setName; % dsh1_12_exp_3_1 = ds21; % dsh1_12_exp_3_1.setName; % dsh1_1_exp_3_2 = ds12; % dsh1_1_exp_3_2.setName; % dsh1_12_exp_3_2 = ds22; % dsh1_12_exp_3_2.setName; % % % % get response for dh2 % ds11 = fftfilt(oi1,T_dh2.objs(1,1)); % ds12 = fftfilt(oid,T_dh2.objs(1,2)); % ds21 = fftfilt(oi1,T_dh2.objs(2,1)); % ds22 = fftfilt(oid,T_dh2.objs(2,2)); % % dh2_1_exp_3_1 = ds11; % dh2_1_exp_3_1.setName; % dh2_12_exp_3_1 = ds21; % dh2_12_exp_3_1.setName; % dh2_1_exp_3_2 = ds12; % dh2_1_exp_3_2.setName; % dh2_12_exp_3_2 = ds22; % dh2_12_exp_3_2.setName; % % % get response for dsh2 % ds11 = fftfilt(oi1,T_dsh2.objs(1,1)); % ds12 = fftfilt(oid,T_dsh2.objs(1,2)); % ds21 = fftfilt(oi1,T_dsh2.objs(2,1)); % ds22 = fftfilt(oid,T_dsh2.objs(2,2)); % % dsh2_1_exp_3_1 = ds11; % dsh2_1_exp_3_1.setName; % dsh2_12_exp_3_1 = ds21; % dsh2_12_exp_3_1.setName; % dsh2_1_exp_3_2 = ds12; % dsh2_1_exp_3_2.setName; % dsh2_12_exp_3_2 = ds22; % dsh2_12_exp_3_2.setName; % % % get response for dx1 % ds11 = fftfilt(oi1,T_dx1.objs(1,1)); % ds12 = fftfilt(oid,T_dx1.objs(1,2)); % ds21 = fftfilt(oi1,T_dx1.objs(2,1)); % ds22 = fftfilt(oid,T_dx1.objs(2,2)); % % dx1_1_exp_3_1 = ds11; % dx1_1_exp_3_1.setName; % dx1_12_exp_3_1 = ds21; % dx1_12_exp_3_1.setName; % dx1_1_exp_3_2 = ds12; % dx1_1_exp_3_2.setName; % dx1_12_exp_3_2 = ds22; % dx1_12_exp_3_2.setName; % % % get response for dx2 % ds11 = fftfilt(oi1,T_dx2.objs(1,1)); % ds12 = fftfilt(oid,T_dx2.objs(1,2)); % ds21 = fftfilt(oi1,T_dx2.objs(2,1)); % ds22 = fftfilt(oid,T_dx2.objs(2,2)); % % dx2_1_exp_3_1 = ds11; % dx2_1_exp_3_1.setName; % dx2_12_exp_3_1 = ds21; % dx2_12_exp_3_1.setName; % dx2_1_exp_3_2 = ds12; % dx2_1_exp_3_2.setName; % dx2_12_exp_3_2 = ds22; % dx2_12_exp_3_2.setName; % % % % %%% Get model response % mod1_3_1 = dH_1_exp_3_1.*dH + dsH_1_exp_3_1.*dsH + dS11_1_exp_3_1.*dS11 + dS1D_1_exp_3_1.*dS1D +... % dSD1_1_exp_3_1.*dSD1 + dSDD_1_exp_3_1.*dSDD + dh1_1_exp_3_1.*dh1 + dsh1_1_exp_3_1.*dsh1 + ... % dh2_1_exp_3_1.*dh2 + dsh2_1_exp_3_1.*dsh2 + dx1_1_exp_3_1.*dx1 + dx2_1_exp_3_1.*dx2; % mod1_3_1.setName; % % mod12_3_1 = dH_12_exp_3_1.*dH + dsH_12_exp_3_1.*dsH + dS11_12_exp_3_1.*dS11 + dS1D_12_exp_3_1.*dS1D +... % dSD1_12_exp_3_1.*dSD1 + dSDD_12_exp_3_1.*dSDD + dh1_12_exp_3_1.*dh1 + dsh1_12_exp_3_1.*dsh1 + ... % dh2_12_exp_3_1.*dh2 + dsh2_12_exp_3_1.*dsh2 + dx1_12_exp_3_1.*dx1 + dx2_12_exp_3_1.*dx2; % mod12_3_1.setName; % % mod1_3_2 = dH_1_exp_3_2.*dH + dsH_1_exp_3_2.*dsH + dS11_1_exp_3_2.*dS11 + dS1D_1_exp_3_2.*dS1D +... % dSD1_1_exp_3_2.*dSD1 + dSDD_1_exp_3_2.*dSDD + dh1_1_exp_3_2.*dh1 + dsh1_1_exp_3_2.*dsh1 + ... % dh2_1_exp_3_2.*dh2 + dsh2_1_exp_3_2.*dsh2 + dx1_1_exp_3_2.*dx1 + dx2_1_exp_3_2.*dx2; % mod1_3_2.setName; % % mod12_3_2 = dH_12_exp_3_2.*dH + dsH_12_exp_3_2.*dsH + dS11_12_exp_3_2.*dS11 + dS1D_12_exp_3_2.*dS1D +... % dSD1_12_exp_3_2.*dSD1 + dSDD_12_exp_3_2.*dSDD + dh1_12_exp_3_2.*dh1 + dsh1_12_exp_3_2.*dsh1 + ... % dh2_12_exp_3_2.*dh2 + dsh2_12_exp_3_2.*dsh2 + dx1_12_exp_3_2.*dx1 + dx2_12_exp_3_2.*dx2; % mod12_3_2.setName; % % % %% plot % % i1o1lin = mod1_3_1; % i1o1lin.setName('i1->o1 lin'); % i1oDlin = mod12_3_1; % i1oDlin.setName('i1->oD lin'); % % iDo1lin = mod1_3_2; % iDo1lin.setName('iD->o1 lin'); % iDoDlin = mod12_3_2; % iDoDlin.setName('iD->oD lin'); % % i1o1nlin = s1_exp_3_1-ns1_exp_3_1-mod1_3_1; % i1o1nlin.setName('i1->o1 nlin'); % i1oDnlin = sd_exp_3_1-nsd_exp_3_1-mod12_3_1; % i1oDnlin.setName('i1->oD nlin'); % % iDo1nlin = s1_exp_3_2-ns1_exp_3_2-mod1_3_2; % iDo1nlin.setName('iD->o1 nlin'); % iDoDnlin = sd_exp_3_2-nsd_exp_3_2-mod12_3_2; % iDoDnlin.setName('iD->oD nlin'); % % iplot(i1o1lin,i1o1nlin) % iplot(i1oDlin,i1oDnlin) % iplot(iDo1lin,iDo1nlin) % iplot(iDoDlin,iDoDnlin) % % %% Get Euclidean Norm % % n1lin = norm(i1o1lin.y); % n2lin = norm(i1oDlin.y); % n3lin = norm(iDo1lin.y); % n4lin = norm(iDoDlin.y); % % n1nlin = norm(i1o1nlin.y); % n2nlin = norm(i1oDnlin.y); % n3nlin = norm(iDo1nlin.y); % n4nlin = norm(iDoDnlin.y); %