Mercurial > hg > ltpda
diff m-toolbox/test/test_ao_simplifyYunits.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_simplifyYunits.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,176 @@ +mc + +%% Make test AOs + +nsecs = 10000; +fs = 10; + +pl = plist('nsecs', nsecs, 'fs', fs, 'tsfcn', 'sin(2*pi*7.433*t) + randn(size(t))'); + +a1 = ao(pl); +a1.setName('a1'); +a1.setYunits('m'); + +% This should output N +iunits1 = unit('m'); +ounits1 = unit('V'); +iunits2 = unit('V'); +ounits2 = unit('N'); + +lp = miir(plist('type', 'lowpass', 'fs', fs, 'fc', 0.1, 'order', 5,'iunits', iunits1, 'ounits', ounits1)); +hp = miir(plist('type', 'highpass', 'fs', fs, 'fc', 1, 'order', 2,'iunits', iunits2, 'ounits', ounits2)); + +a1f = filter(a1, [lp hp], plist('bank', 'serial')); + +%% Simplify + +b = a1f.simplifyYunits() + +%% Units with prefixes + + +a = ao(1:10); +a.setYunits('mm m^-1') + +a.simplifyYunits + + +%% Units with prefixes + + +a = ao(1:10); +a.setYunits('mm m Hz um^-2') + +a.simplifyYunits(plist('prefixes', true)) + +%% More tests on prefixes +N = 8; + +test = true(N,1); + +% Case 1 +jj = 1; +% A unit is canceled out but there is a remaining prefix AND a remaining unit. +% Example: 'fN mN^-1 Hz' +a = ao([1:10]',[2:2:20]',plist('xunits','s')); +a.setYunits('fN mN^-1 Hz'); + +% The unit Newton will be canceled out and the remaining prefix (here 'p') will be added to the Hz +b = simplifyYunits(a, plist('prefixes', true)); +c = simplifyYunits(a, plist('prefixes', false)); + +% Result: 'pHz' +if ne(b.yunits, unit('Hz')) || ne(c.yunits, unit('pHz')) + test(jj) = false; +end + +% Case 2 +jj = 2; +% A unit is canceled out but there is a remaining prefix AND NO remaining unit. +% Example: 'fN mN^-1' +a = ao([1:10]',[2:2:20]',plist('xunits','s')); +a.setYunits('fN mN^-1'); + +% In this case it is not possible to keep the remaining prefix +% --> Don't simplify the unit (it is only possible if we compute the prefix to the values) +b = simplifyYunits(a, plist('prefixes', true)); +c = simplifyYunits(a, plist('prefixes', false)); + +% Result: 'fN mN^-1' +if ne(b.yunits, unit('')) || ne(c.yunits, unit('fN mN^-1')) + test(jj) = false; +end + +% Case 3 +jj = 3; +% The 'normal' case +% Example: 'fN m^-2 mN^-2 Hz mm' +a = ao([1:10]',[2:2:20]',plist('xunits','s')); +a.setYunits('fN m^-2 mN^-2 Hz mm'); + +b = simplifyYunits(a, plist('prefixes', true)); +c = simplifyYunits(a, plist('prefixes', false)); + +% Result: 'GN^-1 km^-1 Hz' +if ne(b.yunits, unit('N^-1 m^-1 Hz')) || ne(c.yunits, unit('GN^-1 km^-1 Hz')) + test(jj) = false; +end + +% Case 4 +jj = 4; +% Power +% Example: ('mm')^2 +a = ao([1:10]',[2:2:20]',plist('xunits','s')); +a.setYunits('mm'); + +b = simplifyYunits(a.^2, plist('prefixes', true)); +c = simplifyYunits(a.^2, plist('prefixes', false)); + +% Result: 'mm^2' +if ne(b.yunits, unit('m^2')) || ne(c.yunits, unit('mm^2')) + test(jj) = false; +end + +% Case 5 +jj = 5; +% Power +n = utils.math.randelement([-4:-1 1:4],1); +% Example: ('mm^-1 nm^-1')^n +a = ao([1:10]',[2:2:20]',plist('xunits','s')); +a.setYunits('mm^-1 nm^-1'); + +b = simplifyYunits(a.^n, plist('prefixes', true)); +c = simplifyYunits(a.^n, plist('prefixes', false)); + +% Result: 'um^-n' +if ne(b.yunits, unit(['m^' num2str(n*-2)])) || ne(c.yunits, unit(['um^' num2str(n*-2)])) + test(jj) = false; +end + +% Case 6 +jj = 6; +% A unit is canceled out but there is a remaining prefix AND a +% remaining unit. +% Example: ('mm um ks^-1 s') +a = ao([1:10]',[2:2:20]',plist('xunits','s')); +a.setYunits('mm um ks^-1 s'); + +b = simplifyYunits(a, plist('prefixes', true)) +c = simplifyYunits(a, plist('prefixes', false)) + +% Result: 'um^2' +if ne(b.yunits, unit('m^2')) || ne(c.yunits, unit('um^2')) + test(jj) = false; +end + +% Case 7 +jj = 7; +% A unit is canceled out but there is a remaining prefix AND a +% remaining unit. +% Example: ('mm um ks^-1 s') +a = ao([1:10]',[2:2:20]',plist('xunits','s')); +a.setYunits('mm um ks^-1 s'); + +b = simplifyYunits(sqrt(a), plist('prefixes', true)) +c = simplifyYunits(sqrt(a), plist('prefixes', false)) + +% Result: 'um^2' +if ne(b.yunits, unit('m')) || ne(c.yunits, unit('um')) + test(jj) = false; +end + +% Case 8 +jj = 8; +% Sqrt of Power +n = utils.math.randelement([-4:-2 2:4],1); +% Example: ('mm^-1 nm^-1')^2n +a = ao([1:10]',[2:2:20]',plist('xunits','s')); +a.setYunits('mm^-1 nm^-1'); + +b = simplifyYunits(sqrt(a.^(2*n)), plist('prefixes', true)) +c = simplifyYunits(sqrt(a.^(2*n)), plist('prefixes', false)) + +% Result: 'um^-n' +if ne(b.yunits, unit(['m^' num2str(n*-2)])) || ne(c.yunits, unit(['um^' num2str(n*-2)])) + test(jj) = false; +end