diff m-toolbox/test/test_ao_fftfilt.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_fftfilt.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,139 @@
+% Test script for ao/fftfilt
+%
+% L Ferraioli 09-10-08
+%
+% $Id: test_ao_cov.m,v 1.2 2008/12/11 08:25:15 hewitson Exp $
+%
+
+s = ao(plist('tsfcn', '3.*sin(2.*pi.*0.01.*t) + randn(size(t))', 'fs', 10, 'nsecs', 1e4));
+
+%% Test with a miir filter
+
+% get a miir filter
+plf = plist('type','lowpass',...
+  'order',4,...
+  'fs',10,...
+  'fc',1);
+filt = miir(plf);
+
+% do classical fitering
+fs1 = filter(s,filt);
+iplot(s,fs1)
+
+% do fftfilt
+fs2 = fftfilt(s,filt);
+
+% compare results
+iplot(fs1,fs2)
+iplot(fs1./fs2)
+iplot(fs1-fs2)
+
+%% Test with a miir filter
+
+% get a miir filter
+plf = plist('type','lowpass',...
+  'order',4,...
+  'fs',10,...
+  'fc',1);
+filt = miir(plf);
+
+% do classical fitering
+fs1 = filter(s,filt);
+iplot(s,fs1)
+
+% do fftfilt
+plfft = plist('Npad',5.*length(s.data.y));
+fs2 = fftfilt(s,filt);
+
+% compare results
+iplot(fs1,fs2)
+iplot(fs1./fs2)
+iplot(fs1-fs2)
+
+%%
+
+% imp = zeros(10000,1);
+% imp(1) = 1;
+% 
+% imp_resp = filter(num,den,imp);
+% 
+% 
+% fs1 = filter(num,den,s.y);
+% fs2 = conv(s.y,imp_resp);
+% X = fft([s.y;zeros(length(imp_resp)-1,1)]);
+% Y = fft([imp_resp;zeros(length(s.y)-1,1)]);
+% fs3 = ifft(X.*Y);
+
+%% Test pzmodel fftfilt
+
+poles = [pz(1e-3,2) pz(1e-2)];
+zeros = [pz(3e-3,3) pz(5e-2)];
+pzm   = pzmodel(10, poles, zeros);
+
+% do fftfilt
+plfft = plist('Npad',5.*length(s.data.y));
+fs = fftfilt(s,pzm);
+
+tf = tfe(s,fs,plist('navs',2));
+rsp = resp(pzm,plist('f',logspace(-4,log10(5))));
+iplot(tf,rsp)
+
+%% Test smodel
+
+str = 'a.*(2.*i.*pi.*f).^2 + b.*2.*i.*pi.*f + c';
+mod = smodel(str);
+mod.setParams({'a','b','c'},{1,2,3});
+mod.setXvar('f');
+
+freq = logspace(-5,log10(5),100);
+mod.setXvals(freq);
+mod.setXunits('Hz');
+mod.setYunits('kg m s^-2');
+
+% eval smodel
+em = eval(mod,plist('output x',freq,'type','fsdata'));
+
+% make a time series
+dt = ao.randn(10000,10);
+
+% do fftfilt
+sdt = fftfilt(dt,mod);
+
+% test output
+tdt = tfe(dt,sdt);
+iplot(em,tdt)
+
+%% Test initial conditions
+
+str = 'a.*(2.*i.*pi.*f).^2 + b.*2.*i.*pi.*f + c';
+mod = smodel(str);
+mod.setParams({'a','b','c'},{1,2,3});
+mod.setXvar('f');
+
+freq = logspace(-5,log10(5),100);
+mod.setXvals(freq);
+mod.setXunits('Hz');
+mod.setYunits('kg m s^-2');
+
+% eval smodel
+em = eval(mod,plist('output x',freq,'type','fsdata'));
+
+% make a time series
+dt = ao.randn(10000,10);
+
+% do fftfilt
+sdt = fftfilt(dt,mod);
+
+% do fftfilt with initial conditions assuming a 2nd order equation
+sdt_inCond = fftfilt(dt,mod,plist('initial conditions',[2000,1000]));
+
+% test output
+iplot(sdt_inCond,sdt)
+iplot(sdt_inCond-sdt,plist('yscales',{'all','log'}))
+
+
+
+
+
+
+