Mercurial > hg > ltpda
diff m-toolbox/test/smallvector/test_smallvectorfit.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/smallvector/test_smallvectorfit.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,75 @@ +% Test ao/smallvectorfit functionality. +% +% A Monsky, M Hueller 29-03-10 +% +% $Id: test_smallvectorfit.m,v 1.5 2010/04/01 08:29:21 anneke Exp $ +% + +% Parameters +datafiles = '2008-07-11_12-26'; +test_data = sprintf('%s/example_file.dat', datafiles); +fs = 800000.0/24640.0; +%% Load data +% unfiltered Data +disp('*** Loading phase data....') +dpl = plist('filename', test_data, 'fs', fs, 'columns', 1, 'yunits', ''); +dpl2 = plist('filename', test_data, 'fs', fs, 'columns', 2, 'yunits', ''); +dpl3 = plist('filename', test_data, 'fs', fs, 'columns', 3, 'yunits', ''); + +phir = ao(dpl); +phi1 = ao(dpl2); +phi12 = ao(dpl3); +iplot(phir, phi12) + +%% User input +% starttime = input('enter start time: '); +% endtime = input('enter end time: '); +%% +starttime = 40; +endtime = 50; +%% Split and filter +pl = plist('type', 'lowpass', 'order', 1, 'gain', 1.0, 'fs', fs, 'fc', 1); +f = mfir(pl); +spl = plist('split_type', 'times', 'times',[starttime endtime]); +phi1_split = split(filter(phi1,f), spl); +phi12_split = split(filter(phi12,f), spl); +phir_split = split(filter(phir,f), spl); + + +%% Compute psi +psi1_split = phi1_split - phir_split; +psi12_split = phi12_split - phir_split; +%% XYdata +xy_psi1 = ao(plist('xvals', phir_split.data.y, 'yvals', psi1_split.data.y, ... + 'xunits', phir_split.yunits, 'yunits', psi1_split.yunits)); % This could be replaced by ao/scatterData +xy_psi12 = ao(plist('xvals', phir_split.data.y, 'yvals', psi12_split.data.y, ... + 'xunits', phir_split.yunits, 'yunits', psi1_split.yunits)); % This could be replaced by ao/scatterData +%% correct for Doppler effect +phir_doppler = dopplercorr(phir_split, plist('bin',50)); +phi1_doppler = dopplercorr(phi1_split, plist('bin',50)); +phi12_doppler = dopplercorr(phi12_split, plist('bin',50)); +%% Psi +psi1_doppler = phi1_doppler - phir_doppler; +psi12_doppler = phi12_doppler - phir_doppler; +psi12_doppler.data.growT; +%% XYdata +xy_psi1_doppler = ao(plist('xvals', phir_doppler.data.y, 'yvals', psi1_doppler.data.y, ... + 'xunits', phir_doppler.yunits, 'yunits', psi1_doppler.yunits)); % This could be replaced by ao/scatterData +xy_psi12_doppler = ao(plist('xvals', phir_doppler.data.y, 'yvals', psi12_doppler.data.y, ... + 'xunits', phir_doppler.yunits, 'yunits', psi12_doppler.yunits)); % This could be replaced by ao/scatterData +iplot(xy_psi1, xy_psi1_doppler) +%% Fit +[fit_psi1 fit_psi12] = smallvectorfit(phir_doppler, phi1_doppler, psi1_doppler, phi12_doppler, psi12_doppler); +%% Linear combination +[svec_psi1 svec_psi12] = smallvector_lincom(... + phir_doppler, phi1_doppler, psi1_doppler, phi12_doppler, psi12_doppler, fit_psi1, fit_psi12); + +%% create an xy data object from the linear combination +xy_klvek_psi1 = scatterData(phir_doppler,svec_psi1); +xy_klvek_psi12 = scatterData(phir_doppler,svec_psi12); +%% Plot data and fit together +iplot(xy_psi1_doppler, xy_klvek_psi1) +iplot(xy_psi12_doppler, xy_klvek_psi12) +%% read out small vector coefficiients +fit_klvek_psi1 = find(fit_psi1.procinfo,'coef_psi1'); +fit_klvek_psi12 = find(fit_psi12.procinfo,'coef_psi12');