Mercurial > hg > ltpda
diff m-toolbox/test/test_ao_mtimes.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_mtimes.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,191 @@ +mc + + +%% Some AOs + +c1 = ao(1); c1.setName; +c2 = ao(2); c2.setName; +c3 = ao(3); c3.setName; +c4 = ao(randn(3,3)); c4.setName; +c5 = ao(randn(3,3)); c5.setName; +c6 = ao(randn(3,1)); c6.setName; +c7 = ao(randn(1,3)); c7.setName; + + +t1 = ao(plist('tsfcn', 't', 'fs', 10, 'nsecs', 10)); t1.'; t1.setName; +t2 = ao(plist('tsfcn', 'sqrt(t)', 'fs', 10, 'nsecs', 10)); t2.setName; +t3 = ao(plist('tsfcn', 't.^2', 'fs', 10, 'nsecs', 10)); t3.setName; +t4 = ao(plist('tsfcn', 't', 'fs', 10, 'nsecs', 10)); t4.'; t4.setName; +t5 = ao(plist('tsfcn', 't', 'fs', 10, 'nsecs', 10)); t5.'; t5.setName; + +f1 = ao(plist('fsfcn', 'f', 'f', 'logspace(-4,1,100)')); f1.setName; +f2 = ao(plist('fsfcn', '1./f', 'f', 'logspace(-4,1,100)')); f2.'; f2.setName; +f3 = ao(plist('fsfcn', 'sqrt(f)', 'f', 'logspace(-4,1,100)')); f3.setName; + +x1 = ao(plist('xyfcn', 'x', 'x', '1:100')); x1.setName; +x2 = ao(plist('xyfcn', '1./x', 'x', '1:100')); x2.'; x2.setName; +x3 = ao(plist('xyfcn', 'sqrt(x)', 'x', '1:100')); x3.setName; + +%% Rule 1: [1x1] * [1x1] + +%---------- CDATA +% cdata * cdata +r1 = mtimes(c1,c3) +% cdata * tsdata +r2 = mtimes(c2,t1) +% cdata * fsdata +r3 = mtimes(c1,f1) +% cdata * xydata +r4 = mtimes(c1,x1) + +%---------- TSDATA +% tsdata * tsdata +r5 = mtimes(t1, t2) +% tsdata * fsdata +try + r6 = mtimes(t1, f2) + error('Data types should be incompatible: booo!'); +catch + lasterr + warning('Data types not compatible: fsdata*tsdata: hoorah!'); +end +% xydata * tsdata +r7 = mtimes(x1, t2) +% tsdata * cdata +r8 = mtimes(t1, c2) + +%---------- FSDATA +% fsdata * tsdata +try + r9 = mtimes(f1, t2) + error('Data types should be incompatible: booo!'); +catch + lasterr + warning('Data types not compatible: fsdata+tsdata: hoorah!'); +end +% fsdata * fsdata +r10 = mtimes(f1, f2) +% fsdata * xydata +r11 = mtimes(f1, x2) +% fsdata * cdata +r12 = mtimes(f1, c2) + +%---------- XYDATA +% xydata * tsdata +r13 = mtimes(x1, t2) +% xydata * fsdata +r14 = mtimes(x1, f2) +% xydata * xydata +r15 = mtimes(x1, x2) +% xydata * cdata +r16 = mtimes(x1, c2) + +%% Rule 2: [1xN] * a or [Nx1] * a + +v1 = [t1 t3]; +v2 = [t1; t3]; + +r1 = mtimes(v1,c1) +r2 = mtimes(v2,c1) + +%% Rule 3: [1xN] * [Nx1] + +v1 = [t1 t1]; +v2 = [t3; t2]; + +r1 = mtimes(v1,v2) + +%% Rule 4: [1xN] * [1xN] + +v1 = [t1 t1]; + +try + r1 = mtimes(v1,v1) + error('Sizes should be incompatible: booo!'); +catch + lasterr + warning('Sizes not compatible: hoorah!'); +end + +%% Rule 5: [Nx1] * [1xM] + +v1 = [t1;t4;t5]; +v2 = [t2 t3]; + +r = mtimes(v1,v2) + +%% Rule 6: [Nx1] * [Nx1] + +v1 = [t1;t4;t5]; + +try + r1 = mtimes(v1,v1) + error('Sizes should be incompatible: booo!'); +catch + lasterr + warning('Sizes not compatible: hoorah!'); +end + +%% Rule 7: [NxP] * [Nx1] + +m = [t1 t1;t4 t4;t5 t5]; +v = [t1;t2;t3] + +try + r1 = mtimes(m,v) + error('Sizes should be incompatible: booo!'); +catch + lasterr + warning('Sizes not compatible: hoorah!'); +end + +%% but [2x2] * [2 1] should work +m = [t1 t1; t4 t4]; +v = [t2;t3]; + +r1 = mtimes(m,v); + + +%% Rule 8: [NxP] * [1xP] + +m = [t1 t1;t4 t4;t5 t5]; +v = [t2 t2] + + +try + r1 = mtimes(m,v) + error('Sizes should be incompatible: booo!'); +catch + lasterr + warning('Sizes not compatible: hoorah!'); +end + +%% Rule 9: [NxP] * [NxP] + +m = [t1 t1;t4 t4;t5 t5]; + + +try + r1 = mtimes(m,m) + error('Sizes should be incompatible: booo!'); +catch + lasterr + warning('Sizes not compatible: hoorah!'); +end + +%% Rule 10: [NxP] * [P*Q] + +m1 = [t1 t1;t4 t4;t5 t5]; +m2 = [t2 t2 t3; t3 t2 t3]; + +r1 = mtimes(m1,m2) + + + + + + + + + +