Mercurial > hg > ltpda
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 |