comparison testing/utp_1.1/utp_fcns/get_test_obj_ao_noisegen2D.m @ 44:409a22968d5e default

Add unit tests
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Tue, 06 Dec 2011 18:42:11 +0100
parents
children
comparison
equal deleted inserted replaced
43:bc767aaa99a8 44:409a22968d5e
1 % test csd for ao/noisegen2D
2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3 %
4 % DESCRIPTION: Output a model for mdc1 cross spectral density
5 %
6 % CALL:
7 % [CSD,TF,a1,a2,a3,a4,a5,a6,av,am,plstd] = get_test_obj_ao_noisegen2D()
8 %
9 %
10 % OUTPUTS:
11 % CSD - a 2x2 matrix of analysis objects containing CSD
12 % models
13 % TF - a 2x2 matrix of analysis objects containing TF
14 % models
15 % a# - are white noise aos
16 % av - a vector of wn aos
17 % am - a matrix of wn aos
18 % plst - a standard plist to call noisegen2D
19 %
20 %
21 %
22 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
23 function [CSD,TF,a1,a2,a3,a4,a5,a6,av,am,plstd,plstd2] = get_test_obj_ao_noisegen2D()
24
25 nsecs = 100;
26 fs = 10; % Hz
27 f = logspace(-6,log10(fs/2),100).'; % vector of frequencies Hz
28
29 % Models response calculation
30 tf11 = calcTF11(f,fs);
31 tf12 = calcTF12(f,fs);
32 tf21 = calcTF21(f,fs);
33 tf22 = calcTF22(f,fs);
34
35 % CSD calculation
36 csd11 = tf11.*conj(tf11)+tf12.*conj(tf12);
37 csd12 = tf11.*conj(tf21)+tf12.*conj(tf22);
38 csd22 = tf22.*conj(tf22)+tf21.*conj(tf21);
39 csd21 = conj(csd12);
40 csd11.setName('CSD11');
41 csd12.setName('CSD12');
42 csd21.setName('CSD21');
43 csd22.setName('CSD22');
44
45 CSD = [csd11 csd12;csd21 csd22];
46 TF = [tf11 tf12;tf21 tf22];
47
48 % Building test objects
49 a1 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', nsecs, 'yunits', 'm'));
50 a2 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', nsecs));
51 a3 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', nsecs, 'yunits', 'm'));
52 a4 = ao(plist('tsfcn', 'randn(size(t))', 'fs', fs, 'nsecs', nsecs, 'yunits', ''));
53 a5 = ao(plist('tsfcn', 'randn(size(t)).''', 'fs', fs, 'nsecs', nsecs, 'fm s^-2'));
54 a6 = ao(plist('tsfcn', 'randn(size(t)).''', 'fs', fs, 'nsecs', nsecs, 'V^2'));
55 av = [a1 a2 a3];
56 am = [a1 a2; a3 a4];
57
58 a1.setName;
59 a2.setName;
60 a3.setName;
61 a4.setName;
62 a5.setName;
63 a6.setName;
64
65 % building standard plist
66 plstd = plist(...
67 'csd11', CSD(1,1), ...
68 'csd12', CSD(1,2), ...
69 'csd21', CSD(2,1), ...
70 'csd22', CSD(2,2), ...
71 'MaxIter', 60, ...
72 'PoleType', 2, ...
73 'MinOrder', 15, ...
74 'MaxOrder', 45, ...
75 'Weights', 3, ...
76 'Plot', false,...
77 'FITTOL', 0.1,...
78 'MSEVARTOL', 0.1,...
79 'UseSym', 0,...
80 'Disp', false);
81
82 plstd2 = plist(...
83 'fs', fs, ...
84 'Iunits', '', ...
85 'Ounits', 'm', ...
86 'MaxIter', 60, ...
87 'PoleType', 2, ...
88 'MinOrder', 15, ...
89 'MaxOrder', 45, ...
90 'Weights', 3, ...
91 'Plot', false,...
92 'FITTOL', 0.1,...
93 'MSEVARTOL', 0.1,...
94 'UseSym', 0,...
95 'Disp', false);
96
97 end
98
99
100 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
101 % LOCAL FUNCTIONS
102 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
103 function tf11 = calcTF11(f,fs)
104
105
106
107 % Model Stefano TF11 coefficients
108 dRes11 = [2.44554138162509e-011 - 1.79482547894083e-011i;
109 2.44554138162509e-011 + 1.79482547894083e-011i;
110 2.66402334803101e-009 + 1.1025122049153e-009i;
111 2.66402334803101e-009 - 1.1025122049153e-009i;
112 -7.3560293387644e-009;
113 -1.82811618589835e-009 - 1.21803627800855e-009i;
114 -1.82811618589835e-009 + 1.21803627800855e-009i;
115 1.16258677367555e-009;
116 1.65216557639319e-016;
117 -1.78092396888606e-016;
118 -2.80420398962379e-017;
119 9.21305973049041e-013 - 8.24686706827269e-014i;
120 9.21305973049041e-013 + 8.24686706827269e-014i;
121 5.10730060739905e-010 - 3.76571756625722e-011i;
122 5.10730060739905e-010 + 3.76571756625722e-011i;
123 3.45893698149735e-009;
124 3.98139182134446e-014 - 8.25503935419059e-014i;
125 3.98139182134446e-014 + 8.25503935419059e-014i;
126 -1.40595719147164e-011];
127
128 dPoles11 = [0.843464045655194 - 0.0959986292915475i;
129 0.843464045655194 + 0.0959986292915475i;
130 0.953187595424927 - 0.0190043625473383i;
131 0.953187595424927 + 0.0190043625473383i;
132 0.967176277937188;
133 0.995012027005247 - 0.00268322602801729i;
134 0.995012027005247 + 0.00268322602801729i;
135 0.996564761885673;
136 0.999999366165445;
137 0.999981722418555;
138 0.999921882627659;
139 0.999624431675213 - 0.000813407848742761i;
140 0.999624431675213 + 0.000813407848742761i;
141 0.997312006278751 - 0.00265611346834941i;
142 0.997312006278751 + 0.00265611346834941i;
143 0.990516544257531;
144 0.477796923118318 - 0.311064085401834i;
145 0.477796923118318 + 0.311064085401834i;
146 0];
147
148 dDTerms11 = 0;
149
150 % response calculation
151 pfparams.type = 'disc';
152 pfparams.freq = f;
153 pfparams.fs = fs;
154 pfparams.res = dRes11;
155 pfparams.pol = dPoles11;
156 pfparams.dterm = dDTerms11;
157 pfr = utils.math.pfresp(pfparams);
158 mtf11 = pfr.resp;
159
160 % building AOs
161 tf11 = ao(plist('xvals', f, 'yvals', mtf11, 'fs', fs, 'type', 'fsdata'));
162 % name for this object
163 tf11.setName('TF11');
164
165 end
166
167 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
168 function tf12 = calcTF12(f,fs)
169
170 % Model Stefano TF12
171 dRes12 = [1.44258422208796e-017 + 7.07359428613009e-019i;
172 1.44258422208796e-017 - 7.07359428613009e-019i;
173 -3.4918408053655e-021 - 1.05662874569329e-021i;
174 -3.4918408053655e-021 + 1.05662874569329e-021i;
175 -7.61773292876976e-021;
176 4.84357724603939e-020 + 2.38824204294595e-019i;
177 4.84357724603939e-020 - 2.38824204294595e-019i;
178 -4.07088520945753e-020 - 2.31474543846105e-019i;
179 -4.07088520945753e-020 + 2.31474543846105e-019i;
180 8.73316588658882e-023;
181 -5.21840635377469e-020;
182 1.8461911504859e-023;
183 5.20105247464461e-020;
184 -4.68960092394415e-022;
185 -1.44261407664171e-017 + 6.8922564526833e-019i;
186 -1.44261407664171e-017 - 6.8922564526833e-019i;
187 3.13688133935426e-022];
188
189 dPoles12 = [0.477546340377332 - 0.310830571032376i;
190 0.477546340377332 + 0.310830571032376i;
191 0.99790715414307 - 0.0028490561287024i;
192 0.99790715414307 + 0.0028490561287024i;
193 0.998014205354671 ;
194 0.999585354543332 - 0.000780408757425194i;
195 0.999585354543332 + 0.000780408757425194i;
196 0.99966003029931 - 0.000830944038363768i;
197 0.99966003029931 + 0.000830944038363768i;
198 0.999962770401331 ;
199 0.999981881865521 ;
200 0.999999365763457 ;
201 0.999981706320212 ;
202 0.99992421574188 ;
203 0.477898460791003 + 0.311001926610074i;
204 0.477898460791003 - 0.311001926610074i;
205 0];
206 dDTerms12 = 0;
207
208 % response calculation
209 pfparams.type = 'disc';
210 pfparams.freq = f;
211 pfparams.fs = fs;
212 pfparams.res = dRes12;
213 pfparams.pol = dPoles12;
214 pfparams.dterm = dDTerms12;
215 pfr = utils.math.pfresp(pfparams);
216 mtf12 = pfr.resp;
217
218 % building AOs
219 tf12 = ao(plist('xvals', f, 'yvals', mtf12, 'fs', fs, 'type', 'fsdata'));
220 % name for this object
221 tf12.setName('TF12');
222
223 end
224
225 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
226 function tf21 = calcTF21(f,fs)
227
228 % Model Stefano Tf21
229 dRes21 = [-1.80035241582968e-016 + 1.99543917791863e-015i;
230 -1.80035241582968e-016 - 1.99543917791863e-015i;
231 -1.85590889333759e-013 - 1.23844418827409e-014i;
232 -1.85590889333759e-013 + 1.23844418827409e-014i;
233 5.03656596876842e-013 ;
234 -2.62470963499904e-013 + 2.30024232938878e-012i;
235 -2.62470963499904e-013 - 2.30024232938878e-012i;
236 -9.83780507870955e-018 ;
237 3.40426735130194e-021 ;
238 9.78322351492755e-018 ;
239 -1.65010934542937e-020 ;
240 2.60918565203438e-015 + 1.0546609464659e-015i;
241 2.60918565203438e-015 - 1.0546609464659e-015i;
242 3.18105585405455e-014 + 2.48839990780042e-013i;
243 3.18105585405455e-014 - 2.48839990780042e-013i;
244 3.23021641947666e-013 ;
245 4.81265000078114e-016 - 3.18269170053848e-017i;
246 4.81265000078114e-016 + 3.18269170053848e-017i;
247 5.16260024128201e-018];
248
249 dPoles21 = [0.872004077421604 - 0.110344282822693i;
250 0.872004077421604 + 0.110344282822693i;
251 0.956884129232757 - 0.0225532091775074i;
252 0.956884129232757 + 0.0225532091775074i;
253 0.966514825697177 ;
254 0.995140550419744 - 0.000755127639524413i;
255 0.995140550419744 + 0.000755127639524413i;
256 0.999981802194393 ;
257 0.99999936576546 ;
258 0.999981722418555 ;
259 0.999921882627659 ;
260 0.999624431675213 + 0.000813407848742761i;
261 0.999624431675213 - 0.000813407848742761i;
262 0.997312006278751 + 0.00265611346834941i;
263 0.997312006278751 - 0.00265611346834941i;
264 0.990516544257531 ;
265 0.477796923118318 + 0.311064085401834i;
266 0.477796923118318 - 0.311064085401834i;
267 0];
268
269 dDTerms21 = 0;
270
271 % response calculation
272 pfparams.type = 'disc';
273 pfparams.freq = f;
274 pfparams.fs = fs;
275 pfparams.res = dRes21;
276 pfparams.pol = dPoles21;
277 pfparams.dterm = dDTerms21;
278 pfr = utils.math.pfresp(pfparams);
279 mtf21 = pfr.resp;
280
281 % building AOs
282 tf21 = ao(plist('xvals', f, 'yvals', mtf21, 'fs', fs, 'type', 'fsdata'));
283 % name for this object
284 tf21.setName('TF21');
285
286 end
287
288 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
289 function tf22 = calcTF22(f,fs)
290
291 % Model Stefano Tf22
292 dRes22 = [1.1284521501259e-014;
293 -3.72133611555879e-014 - 2.08232683444075e-014i;
294 -3.72133611555879e-014 + 2.08232683444075e-014i;
295 9.84930639106637e-014 - 1.46640810672565e-013i;
296 9.84930639106637e-014 + 1.46640810672565e-013i;
297 2.51323684013671e-014 ;
298 -5.64078525288305e-014 ;
299 -1.62476406586366e-014 ;
300 -1.08424815979566e-011 + 8.32328079357669e-012i;
301 -1.08424815979566e-011 - 8.32328079357669e-012i;
302 2.41831559776112e-011];
303
304 dPoles22 = [0.988511243978897;
305 0.997305870640646 + 0.00211760900132725i;
306 0.997305870640646 - 0.00211760900132725i;
307 0.999626453270255 + 0.0008125673525946i;
308 0.999626453270255 - 0.0008125673525946i;
309 0.999999366366222 ;
310 0.999981706320212 ;
311 0.99992421574188 ;
312 0.477898460791003 - 0.311001926610074i;
313 0.477898460791003 + 0.311001926610074i;
314 0];
315
316 dDTerms22 = 0;
317
318 % response calculation
319 pfparams.type = 'disc';
320 pfparams.freq = f;
321 pfparams.fs = fs;
322 pfparams.res = dRes22;
323 pfparams.pol = dPoles22;
324 pfparams.dterm = dDTerms22;
325 pfr = utils.math.pfresp(pfparams);
326 mtf22 = pfr.resp;
327
328 % building AOs
329 tf22 = ao(plist('xvals', f, 'yvals', mtf22, 'fs', fs, 'type', 'fsdata'));
330 % name for this object
331 tf22.setName('TF22');
332
333 end