Mercurial > hg > ltpda
diff m-toolbox/test/test_ao_linfit.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_linfit.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,167 @@ +% TEST_AO_LINFIT tests the linfit method of the AO class. +% +% M Hueller 02-03-10 +% +% $Id: test_ao_linfit.m,v 1.6 2011/05/15 22:52:57 mauro Exp $ +% +% function test_ao_linfit() + + +%% Make fake AO from polyval +nsecs = 100; +fs = 10; + +unit_list = unit.supportedUnits; +u1 = unit(cell2mat(utils.math.randelement(unit_list,1))); +u2 = unit(cell2mat(utils.math.randelement(unit_list,1))); + +pl1 = plist('nsecs', nsecs, 'fs', fs, ... + 'tsfcn', 'polyval([10 1], t) + randn(size(t))', ... + 'xunits', 's', 'yunits', u1); + +pl2 = plist('nsecs', nsecs, 'fs', fs, ... + 'tsfcn', 'polyval([-5 0.2], t) + randn(size(t))', ... + 'xunits', 's', 'yunits', u2); + +a1 = ao(pl1); +a2 = ao(pl2); +a = scatterData(a1, a2); + +%% Fit with a straight line + +p11 = linfit(a1, plist(... + )); +p12 = linfit(a1, plist(... + 'dy', 0.1)); +p22 = linfit(a1, plist(... + 'dx', 0.1, 'dy', 0.1, 'P0', [0 0])); +p13 = linfit(a1, plist(... + 'dy', 0.1*ones(size(a1.y)))); +p23 = linfit(a1, plist(... + 'dx', 0.1*ones(size(a1.x)), 'dy', 0.1*ones(size(a1.y)), 'P0', [0 0])); +p14 = linfit(a1, plist(... + 'dy', ao(0.1, plist('yunits', a1.yunits)))); +p24 = linfit(a1, plist(... + 'dx', ao(0.1, plist(... + 'yunits', a1.xunits)), 'dy', ao(0.1, plist('yunits', a1.yunits)), 'P0', [0 0])); +p15 = linfit(a1, plist(... + 'dy', ao(0.1*ones(size(a1.y)), plist('yunits', a1.yunits)))); +p25 = linfit(a1, plist(... + 'dx', ao(0.1*ones(size(a1.x)), plist('yunits', a1.xunits)), 'dy', ao(0.1*ones(size(a1.y)), plist('yunits', a1.yunits)), 'P0', [0 0])); +p26 = linfit(a1, plist(... + 'dx', 0.1, 'dy', 0.1, 'P0', ao([0 0]))); +p27 = linfit(a1, plist(... + 'dx', 0.1, 'dy', 0.1, 'P0', p11)); + +%% Compute fit: evaluating pest + +b11 = p11.eval(plist('type', 'tsdata', 'XData', a1, 'xfield', 'x')); +b12 = p12.eval(plist('XData', a1, 'xfield', 'x')); +b22 = p22.eval(a1, plist('xfield', 'x')); +b13 = p13.eval(plist('XData', a1, 'xfield', 'x')); +b23 = p23.eval(a1, plist('type', 'tsdata', 'xfield', 'x')); +b14 = p14.eval(plist('XData', a1, 'xfield', 'x')); +b24 = p24.eval(a1, plist('type', 'tsdata', 'xfield', 'x')); +b15 = p15.eval(a1, plist('xfield', 'x')); +b25 = p25.eval(plist('XData', a1, 'xfield', 'x')); +b26 = p26.eval(plist('type', 'tsdata', 'XData', a1.x)); +b27 = p27.eval(plist('type', 'tsdata', 'XData', a1.x)); + +%% Plot fit +iplot(a1, b11, b12, b13, b14, b15, b26, b27, ... + b22, b23, b24, b25, ... + plist('LineStyles', {'', '--'})); + +%% Remove linear trend +c = a1-b11; +iplot(c) + +plot(c.hist) + +%% Reproduce from history +disp('Try rebuilding') +a_out = rebuild(c); +iplot(a_out) +plot(a_out.hist) + +%% Fit with a straight line + +p = linfit(a, plist(... + )); + +%% Compute fit: evaluating pest + +b1 = p.eval(plist('XData', a, 'xfield', 'x')); +b2 = p.eval(a, plist('xfield', 'x')); +b3 = p.eval(plist('type', 'xydata', 'XData', a.x, 'xunits', a.xunits)); +b4 = p.eval(plist('XData', a.x, 'xunits', a.xunits)); + +%% Plot fit +iplot(a, b1, b2, b3, b4, ... + plist('LineStyles', {'', '--'})); + +%% Fit with a straight line + +p11 = linfit(a1, a2, plist(... + )); +p12 = linfit(a1, a2, plist(... + 'dy', 0.1)); +p22 = linfit(a1, a2, plist(... + 'dx', 0.1, 'dy', 0.1, 'P0', [0 0])); +p13 = linfit(a1, a2, plist(... + 'dy', 0.1*ones(size(a1.x)))); +p23 = linfit(a1, a2, plist(... + 'dx', 0.1*ones(size(a1.x)), 'dy', 0.1*ones(size(a1.x)), 'P0', [0 0])); +p14 = linfit(a1, a2, plist(... + 'dy', ao(0.1, plist('yunits', a2.yunits)))); +p24 = linfit(a1, a2, plist(... + 'dx', ao(0.1, plist('yunits', a1.yunits)), 'dy', ao(0.1, plist('yunits', a2.yunits)), 'P0', [0 0])); +p15 = linfit(a1, a2, plist(... + 'dy', ao(0.1*ones(size(a2.y)), plist('yunits', a2.yunits)))); +p25 = linfit(a1, a2, plist(... + 'dx', ao(0.1*ones(size(a1.y)), plist('yunits', a1.yunits)), 'dy', ao(0.1*ones(size(a2.y)), plist('yunits', a2.yunits)), 'P0', [0 0])); +p26 = linfit(a1, a2, plist(... + 'dx', 0.1, 'dy', 0.1, 'P0', ao([0 0]))); +p27 = linfit(a1, a2, plist(... + 'dx', 0.1, 'dy', 0.1, 'P0', p11)); + +%% Compute fit: evaluating pest + +b11 = p11.eval(plist('type', 'xydata', 'XData', a1.y, 'xunits', a1.yunits)); +b12 = p12.eval(plist('type', 'xydata', 'XData', a1.y, 'xunits', a1.yunits)); +b22 = p22.eval(a1, plist('type', 'xydata')); +b13 = p13.eval(plist('type', 'xydata', 'XData', a1.y, 'xunits', a1.yunits)); +b23 = p23.eval(a1, plist('type', 'xydata')); +b14 = p14.eval(plist('type', 'xydata', 'XData', a1.y, 'xunits', a1.yunits)); +b24 = p24.eval(a1, plist('type', 'xydata')); +b15 = p15.eval(a1, plist('type', 'xydata')); +b25 = p25.eval(plist('type', 'xydata', 'XData', a1.y)); +b26 = p26.eval(plist('type', 'xydata', 'XData', a1.y)); +b27 = p27.eval(plist('type', 'xydata', 'XData', a1.y)); + +% Build reference object +a12 = ao(plist('xvals', a1.y, 'yvals', a2.y, ... + 'xunits', a1.yunits, 'yunits', a2.yunits)); +%% Plot fit +iplot(b22, b23, b24, b15, ... + b12, b13, b14, b11, ... + plist('LineStyles', {'', '--'})); + +%% Plot fit +iplot(b25, b26, b27, ... + plist('LineStyles', {'', '--'})); + +%% Remove linear trend +c = a12-b27; +iplot(c) + +plot(c.hist) + +%% Reproduce from history +disp('Try rebuilding') +a_out = rebuild(c); +iplot(a_out) +plot(a_out.hist) + +% end +% END