[055026]: testing / test_newerb.m Maximize Restore History

Download this file

test_newerb.m    99 lines (82 with data), 2.4 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
warpname={'symmetric','warped'};
test_failed=0;
for warpidx=1:2
warping=warpname{warpidx};
for testcase=1:4
isuniform=0;
switch testcase
case 1
% Fails for L=5699
L=5700
[g,a]=erbfilters(16000,L,'fractional',warping);
L=filterbanklength(L,a);
isreal=1;
case 2
L=4000;
[g,a]=erbfilters(16000,warping);
L=filterbanklength(L,a);
isreal=1;
case 3
L=6000;
[g,a]=erbfilters(16000,'uniform',warping);
L=filterbanklength(L,a);
isreal=1;
isuniform=1;
case 4
% Fails for L=5699
L=5700
[g,a]=erbfilters(10000,L,'fractional',warping);
L=filterbanklength(L,a);
isreal=1;
end;
disp('testcase')
testcase
% Test it
if 0
f=greasy+randn(L,1);
else
f=[1;zeros(L-1,1)];
if 0
ff=fft(f);
ff(1999:2003)=0;
f=ifft(ff);
end;
end;
% Inspect it: Dual windows, frame bounds and the response
disp('Frame bounds:')
[A,B]=filterbankrealbounds(g,a,L);
A
B
B/A
filterbankresponse(g,a,L,'real','plot');
gd=filterbankrealdual(g,a,L);
if isuniform
c=ufilterbank(f,g,a);
else
c=filterbank(f,g,a);
end;
r=ifilterbank(c,gd,a);
if isreal
r=2*real(r);
end;
disp('Reconstruction:')
res=norm(f-r);
[test_failed,fail]=ltfatdiditfail(res,test_failed);
s=sprintf(['ERBFILTER DUAL %s testcase: %3i L:%3i %0.5g %s'],warping,testcase,L,res,fail);
disp(s);
gt=filterbankrealtight(g,a,L);
if isuniform
ct=ufilterbank(f,gt,a);
else
ct=filterbank(f,gt,a);
end;
rt=ifilterbank(ct,gt,a);
if isreal
rt=2*real(rt);
end;
res=norm(f-r)
[test_failed,fail]=ltfatdiditfail(res,test_failed);
s=sprintf(['ERBFILTER TIGHT %s testcase: %3i L:%3i %0.5g %s'],warping,testcase,L,res,fail);
disp(s);
end;
end;