fbb8540910185346cc468a9b69730f9708b10823
[scilab.git] / scilab / modules / signal_processing / tests / unit_tests / lattn.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Charlotte Hecquet
4 // Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
5 //
6 //  This file is distributed under the same license as the Scilab package.
7 // =============================================================================
8
9 //Generate the process
10 t1=0:0.1:100;
11 y1=sin(2*%pi*t1)+sin(2*%pi*2*t1);
12
13 //Covariance of y1
14 nlag=128;
15 c1=corr(y1,nlag);
16 c1=c1';
17
18 //Compute the filter with maximum order=15 and p=1
19 n=5;
20 [la1,sig1]=lattn(n,1,c1);
21 poly(0,"z");
22 assert_checkequal(la1(1), 1+0.44297752752246194*%z);
23 assert_checkequal(la1(2), 1-0.74241513479044507*%z+0.66265464324027501*%z^2);
24
25 // bug of assert_checkequal ?
26 //assert_checkequal(la1(3), 1-0.74830900964096658*%z+0.66863379685942259*%z^2-0.00480196030174087*%z^3);
27
28 assert_checkequal(la1(4), 1-2.25921688488977512*%z+3.01297448874460594*%z^2-2.24632204438257954*%z^3+0.9961140979715424*%z^4);
29
30 assert_checkequal(la1(5), 1-1.83287468880271454*%z+2.08814963103012197*%z^2-1.0213063678700105*%z^3+0.09534323012552759*%z^4+0.39938577578835760*%z^5);
31
32 assert_checkequal(sig1(1), -1.78885438199984059+%z);
33
34 assert_checkequal(sig1(2), 1.22738933272413431-1.24514849008225914*%z+%z^2);
35
36 assert_checkequal(sig1(3),  -1.51680201929234504+2.3534861083274796*%z-2.25026439104255704*%z^2+%z^3);
37
38 assert_checkequal(sig1(4), 1.06749469293314991-2.31561791575813825*%z+3.06724913799065524*%z^2-2.255390458180341*%z^3+%z^4);
39
40 assert_checkequal(sig1(5), 1.4523203295716356-2.21361191790377232*%z+2.06018618672635778*%z^2-0.19513003383108307*%z^3-0.80871370312335800*%z^4+%z^5);
41
42
43 //Compare result of poles with p=-1 and with levin function
44 [la2,sig2]=lattn(n,-1,c1);
45 assert_checkequal(la2(1), 1-1.78885438199984059*%z);
46
47 assert_checkequal(la2(2), 1-1.24514849008225914*%z+1.22738933272413431*%z^2);
48
49 assert_checkequal(la2(3), 1-2.25026439104255704*%z+2.3534861083274796*%z^2-1.51680201929234504*%z^3);
50
51 assert_checkequal(la2(4), 1-2.255390458180341*%z+3.06724913799065524*%z^2-2.31561791575813825*%z^3+1.06749469293315036*%z^4);
52
53 assert_checkequal(la2(5), 1-0.80871370312331603*%z-0.19513003383117766*%z^2+2.06018618672648479*%z^3-2.21361191790386647*%z^4+1.4523203295716776*%z^5);
54
55 assert_checkequal(sig2(1), 0.44297752752246194+%z);
56
57 assert_checkequal(sig2(2), 0.66265464324027501-0.74241513479044507*%z+%z^2);
58
59 // bug of assert_checkequal ?
60 // assert_checkequal(sig2(3), -0.00480196030174087+0.66863379685942259*%z-0.74830900964096658*%z^2+%z^3);
61
62 assert_checkequal(sig2(4), 0.99611409797154249-2.24632204438258*%z+3.01297448874460594*%z^2-2.25921688488977512*%z^3+%z^4);
63
64 assert_checkequal(sig2(5), 0.39938577578840101+0.09534323012542978*%z-1.02130636786987794*%z^2+2.0881496310300216*%z^3-1.83287468880266791*%z^4+%z^5);