Mercurial > hg > ltpda
view m-toolbox/test/test_ao_simplifyYunits.m @ 30:317b5f447f3e database-connection-manager
Update workspaceBrowser
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Mon, 05 Dec 2011 16:20:06 +0100 |
parents | f0afece42f48 |
children |
line wrap: on
line source
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