Mercurial > hg > ltpda
diff m-toolbox/test/test_ao_eqmotion.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_eqmotion.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,72 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Test ao/eqmotion for the solution of a torsion pendulum equation of the +% motion +% +% 25-03-2009 L. Ferraioli +% CREATION +% +% $Id: test_ao_eqmotion.m,v 1.1 2009/03/27 12:25:15 luigi Exp $ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Generate data + +% generate signal + white noise +a = ao(plist('tsfcn','20.*sin(2.*pi.*t./800)+randn(size(t))','fs',1,'nsecs',1e5,'yunits','rad')); + +%% Solve equation of Motion for the torsion pendulum + +% Set pendulum parameters +I = 4.31e-5; % Moment of Inertia +T0 = 563; % Oscillatory period +Q = 2880; % Quality factor +Gam = I*(2*pi/T0)^2; + +% building coefficients AO +alpha2 = cdata(I); +alpha2.setYunits(unit('kg').*unit('m').^2./unit('rad')); +alpha2 = ao(alpha2); + +alpha1 = cdata(Gam./(2.*pi.*Q./T0)); +alpha1.setYunits(unit('kg').*unit('m').^2./unit('rad')./unit('s')); +alpha1 = ao(alpha1); + +alpha0 = cdata(Gam); +alpha0.setYunits(unit('kg').*unit('m').^2./unit('rad')./unit('s').^2); +alpha0 = ao(alpha0); + +% Calculate torque output units are defined by the coefficients units +pl1 = plist('ALPHA2',alpha2,'ALPHA1',alpha1,'ALPHA0',alpha0); +b1 = eqmotion(a,pl1); +b1.simplifyYunits; +b1.setName; + +% Alternative torque calculation set the targunits to get appropiate output +% units +pl2 = plist('ALPHA2',I,'ALPHA1',Gam./(2.*pi.*Q./T0),'ALPHA0',Gam,'TARGETUNITS',unit('kg').*unit('m').^2./unit('s').^2); +b2 = eqmotion(a,pl2); +b2.simplifyYunits; +b2.setName; + +% plotting +iplot(b1,b2) + +%% Extract TF + +tf1 = tfe(a,b1,plist('Nfft',1e4)); + +tf2 = tfe(a,b2,plist('Nfft',1e4)); + +% Theorethical TF +f = logspace(-4,log10(0.5),300); +f = f.'; +s = 1i.*2.*pi.*f; +I = 4.31e-5; +T0 = 563; +Q = 2880; +Gam = I*(2*pi/T0)^2; +TF = I.*s.^2 + (Gam./(2.*pi.*Q./T0)).*s + Gam; +TF = ao(plist('xvals',f,'yvals',TF,'dtype','fsdata','fs',a.fs)); +TF.setYunits(tf1.yunits); +TF.setName; + +% plot +iplot(TF,tf1,tf2) \ No newline at end of file