4162145459b21d3c75e5a8a6392f0bfb678b2b30
[scilab.git] / scilab / modules / signal_processing / tests / unit_tests / corr.tst
1 // -*- scilab -*-
2
3 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4 // Copyright (C) 2008 - Digiteo - unknown author
5 // Copyright (C) 2009 - Digiteo - Vincent LIARD
6 //
7 // This file must be used under the terms of the CeCILL.
8 // This source file is licensed as described in the file COPYING, which
9 // you should have received as part of this distribution.  The terms
10 // are also available at    
11 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
12
13 // 'corr' unit tests
14
15 test_path = pathconvert(SCI + '/modules/signal_processing/tests/unit_tests');
16
17 // requires test_utilities.sci
18 exec(test_path + 'test_utilities.sci');
19
20 // ****************************************************************
21 // * Part I: defining the tests                                   *
22 // * Part II: performing the tests                                *
23 // ****************************************************************
24
25 // **** Part I: defining the tests ****
26
27 // old tests wrapped
28 function test_corr_old() 
29 rand('normal');
30 x = rand(1,256);
31 y = -x;
32 [c, mxy]=corr(x,y,32);
33 if or(size(c)<>[1 32]) then pause,end
34 if or(size(mxy)<>[1 2]) then pause,end
35 x = x-mxy(1)*ones(x);
36 y = y-mxy(2)*ones(y);
37 c1 = corr(x,y,32);
38 c2 = corr(x,32);
39 if norm(c1+c2,1) > %eps then pause,end
40 deff('[z]=xx(inc,is)','z=x(is:is+inc-1)');
41 deff('[z]=yy(inc,is)','z=y(is:is+inc-1)');
42 [c3,m3]=corr('fft',xx,yy,256,32);
43 if norm(c1-c3,1) > 10 *%eps then pause,end
44 [c4,m4]=corr('fft',xx,256,32);
45 if or(size(c4)<>[1 32]) then pause,end
46 if or(size(m4)<>[1 1]) then pause,end
47 if norm(m3,1) > %eps then pause,end
48 if norm(m4,1) > %eps then pause,end
49 if norm(c3-c1,1) > 10*%eps then pause,end
50 if norm(c4-c2,1) > 10*%eps then pause,end
51 endfunction
52
53 // corr default mode
54 function test_corr_default()
55 x = [1:10];
56 y = [5 10 6 4 8 2 9 3 1 7];
57 nlags = 3;
58 // x, nlag provided
59 cov_ref1 = [8.25 5.775 3.4];
60 Mean_ref1 = 5.5;
61 cov = corr(x, nlags);
62 check(cov, cov_ref1);
63 [cov, Mean] = corr(x, nlags);
64 check([cov, Mean], [cov_ref1, Mean_ref1]);
65 // x, y, nlag provided
66 cov_ref2 = [-2.55 -2.825 -0.4];
67 Mean_ref2 = [5.5 5.5];
68 cov = corr(x, y, nlags);
69 check(cov, cov_ref2);
70 [cov, Mean] = corr(x, y, nlags);
71 check([cov, Mean], [cov_ref2, Mean_ref2]);
72 endfunction
73
74 // corr updates mode
75 function test_corr_updates()
76 load(test_path + 'corr_updates_ref.dat',..
77     'w1_ref', 'xu1_ref', 'w2_ref', 'xu2_ref', 'w3_ref', 'xu3_ref',..
78     'w4_ref', 'xu4_ref', 'w5_ref', 'xu5_ref', 'w6_ref', 'xu6_ref',..
79     'w7_ref', 'xu7_ref', 'w8_ref', 'xu8_ref', 'w9_ref', 'xu9_ref');
80 [w1,xu1] = corr('updt', [1:10], zeros(1,8));
81 check([w1, xu1], [w1_ref, xu1_ref]);
82 [w2, xu2] = corr('updt', [1:8], [%i %i %i %i]);
83 check([w2, xu2], [w2_ref, xu2_ref]);
84 [w3, xu3] = corr('updt', [1:8], [1:8], zeros(1,8));
85 check([w3, xu3], [w3_ref, xu3_ref]);
86 [w4, xu4] = corr('updt', [1:10], [1:10],zeros(1,8));
87 check([w4, xu4], [w4_ref, xu4_ref]);
88 [w5, xu5] = corr('updt', [1:10], [1:10],ones(1,8));
89 check([w5, xu5], [w5_ref, xu5_ref]);
90 [w6, xu6] = corr('updt', [1:10], [5 10 6 4 8 2 9 3 1 7], zeros(1,8));
91 check([w6, xu6], [w6_ref, xu6_ref]);
92 [w7, xu7] = corr('updt', [1:8], [1:8], zeros(1,8), zeros(1,8));
93 check([w7, xu7], [w7_ref, xu7_ref]);
94 [w8, xu8] = corr('updt', [1:8], [1:8], zeros(1,8), 0);
95 check([w8, xu8], [w8_ref, xu8_ref]);
96 [w9, xu9] = corr('updt', [1:8], [1:8], zeros(1,8), [5 2 6 5 3 7 4 5]);
97 check([w9, xu9], [w9_ref, xu9_ref]);
98 endfunction
99
100 // corr fft mode
101 function test_corr_fft()
102 load(test_path + 'corr_fft_ref.dat',..
103     'x', 'c1_ref', 'm1_ref', 'c2_ref', 'm2_ref');
104 // x = rand(1,64);
105 y = -x;
106 deff('[z]=xx(inc,is)', 'z=x(is:is+inc-1)');
107 deff('[z]=yy(inc,is)', 'z=y(is:is+inc-1)');
108 [c1, m1] = corr('fft', xx, 64, 4);
109 check([c1, m1], [c1_ref, m1_ref]);
110 [c2, m2] = corr('fft', xx, yy, 64, 4);
111 check([c2, m2], [c2_ref, m2_ref]);
112 endfunction
113
114 // **** Part II: performing the tests ****
115
116 // wrap all tests together
117 function test_corr()
118 test_corr_old();
119 test_corr_default();
120 test_corr_updates();
121 test_corr_fft();
122 endfunction
123
124 test_corr();