[249cf9]: testing / test_uwfbtpr.m Maximize Restore History

Download this file

test_uwfbtpr.m    120 lines (78 with data), 2.7 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
100
function test_failed = test_uwfbtpr(verbose)
%TEST_UWFBTPR
%
% Checks perfect reconstruction of the general wavelet transform of different
% filters
%
disp('========= TEST UWPFBT ============');
global LTFAT_TEST_TYPE;
tolerance = 1e-8;
if strcmpi(LTFAT_TEST_TYPE,'single')
tolerance = 1e-6;
end
test_failed = 0;
if(nargin>0)
verbose = 1;
else
verbose = 0;
end
type = {'dec'};
ext = {'per'};
J = 4;
%! Mild tree
wt1 = wfbtinit({'db10',6,'full'});
wt1 = wfbtremove(1,1,wt1,'force');
wt1 = wfbtremove(2,1,wt1,'force');
%! Hardcore tree
wt2 = wfbtinit({'db3',1});
wt2 = wfbtput(1,1,'mband1',wt2);
wt2 = wfbtput(2,2,'mband1',wt2);
wt2 = wfbtput(3,3,'mband1',wt2);
wt2 = wfbtput(3,1,'db10',wt2);
wt2 = wfbtput(4,1,'dgrid2',wt2);
wt2 = wfbtput(5,1,'db2',wt2);
% wt2 = wfbtinit();
% wt2 = wfbtput(0,0,{'db',4},wt2);
% wt2 = wfbtput(1,0,{'algmband',1},wt2);
% wt2 = wfbtput(1,1,{'hden',3},wt2);
% wt2 = wfbtput(2,0,{'dgrid',2},wt2);
% wt2 = wfbtput(2,1,{'dgrid',2},wt2);
test_filters = {
{'algmband1',J} % 3 filters, uniform, crit. sub.
{'algmband2',J} % 4 filters, uniform, crit. sub.
{'db10',J}
%{{'hden',3},J} % 3 filters, non-uniform, no crit. sub. no correct
{'dgrid1',J} % 4 filters. sub. fac. 2
wt1
wt2
};
%testLen = 4*2^7-1;%(2^J-1);
testLen = 53;
f = tester_rand(testLen,1);
for extIdx=1:length(ext)
extCur = ext{extIdx};
for typeIdx=1:length(type)
for tt=1:length(test_filters)
actFilt = test_filters{tt};
if verbose, if(~isstruct(actFilt))fprintf('J=%d, filt=%s, ext=%s, inLen=%d \n',actFilt{2},actFilt{1},extCur,length(f)); else disp('Custom'); end; end;
c = uwfbt(f,actFilt);
fhat = iuwfbt(c,actFilt);
err = norm(f-fhat,'fro');
[test_failed,fail]=ltfatdiditfail(err,test_failed,tolerance);
if(~verbose)
if(~isstruct(actFilt))fprintf('J=%d, %5.5s, ext=%s, L=%d, err=%d %s \n',actFilt{2},actFilt{1},extCur,size(f,1),err,fail); else fprintf('Custom, err=%d %s\n',err,fail); end;
end
if strcmpi(fail,'FAILED')
if verbose
if(~isstruct(actFilt)) fprintf('err=%d, filt=%s, ext=%s, inLen=%d \n',err,actFilt{1},extCur,testLen);else disp('Fail. Custom'); end;
figure(1);clf;stem([f,fhat]);
figure(2);clf;stem([f-fhat]);
break;
end
end
if test_failed && verbose, break; end;
end
if test_failed && verbose, break; end;
end
if test_failed && verbose, break; end;
end