diff m-toolbox/test/test_iir_serial_parallel.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_iir_serial_parallel.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,115 @@
+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');
+
+%% Make two filters
+
+lp = miir(plist('type', 'lowpass', 'fs', fs, 'fc', 0.1, 'order', 5));
+hp = miir(plist('type', 'highpass', 'fs', fs, 'fc', 1, 'order', 2));
+
+%% Serial
+
+a1lp = filter(a1, lp);
+a1lphp = filter(a1lp, hp);
+
+a1f = filter(a1, [lp hp], plist('bank', 'serial'));
+
+iplot(a1lphp.psd, a1f.psd, plist('LineStyles', {'', '--'}))
+
+%% Parallel
+
+a1lp = filter(a1, lp);
+a1lphp = a1lp + filter(a1, hp);
+
+a1f = filter(a1, [lp hp]);
+
+iplot(a1lphp.psd, a1f.psd, plist('LineStyles', {'', '--'}))
+
+%% Test filter history serial
+
+nsecs = 100;
+fs    = 10;
+
+pl = plist('nsecs', nsecs, 'fs', fs, 'tsfcn', 'sin(2*pi*0.433*t)');
+
+a1 = ao(pl);
+a1.setName('a1');
+
+segs = split(a1, plist('split_type', 'chunks', 'n', 2));
+
+filts = [lp hp];
+
+% full
+[a1lps, filts] = filter(a1, filts, plist('bank', 'serial'));
+
+% segement 1
+[a1lps1, filts] = filter(segs(1), filts, plist('bank', 'serial'));
+
+% segement 2
+a1lps2 = filter(segs(2), filts, plist('bank', 'serial'));
+
+iplot(a1lps1, a1lps2, a1lps, plist('Xranges', [49 51], 'markers', {'o', 'o', ''}))
+
+%% Test filter history parallel
+
+nsecs = 100;
+fs    = 10;
+
+pl = plist('nsecs', nsecs, 'fs', fs, 'tsfcn', 'sin(2*pi*0.433*t)');
+
+a1 = ao(pl);
+a1.setName('a1');
+
+segs = split(a1, plist('split_type', 'chunks', 'n', 2));
+
+filts = [lp hp];
+
+% full
+[a1lps, filts] = filter(a1, filts);
+
+% segement 1
+[a1lps1, filts] = filter(segs(1), filts);
+
+% segement 2
+a1lps2 = filter(segs(2), filts);
+
+iplot(a1lps1, a1lps2, a1lps, plist('Xranges', [49 51], 'markers', {'o', 'o', ''}))
+
+%% Test Serial with different units
+
+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'));
+
+%% Test Parallel with different units
+
+% This must not to be allowed
+iunits1 = unit('m');
+ounits1 = unit('V');
+iunits2 = unit('m');
+ounits2 = unit('V');
+
+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', 'parallel'));
+
+