[3deeb5]: comp / comp_wpfbt.m  Maximize  Restore  History

Download this file

64 lines (55 with data), 2.0 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
function c=comp_wpfbt(f,wtNodes,rangeLoc,ext,do_scale)
%COMP_WPFBT Compute Wavelet Packet Filterbank Tree
% Usage: c=comp_wpfbt(f,wtNodes,ext);
%
% Input parameters:
% f : Input L*W array.
% wtNodes : Filterbank tree nodes (elementary filterbanks) in
% BF order. Length *nodeNo* cell array of structures.
% ext : Type of the forward transform boundary handling.
%
% Output parameters:
% c : Coefficients stored in cell-array. Each element is one
% subband (matrix with W columns).
%
% Do non-expansve transform if ext=='per'
doPer = strcmp(ext,'per');
% Pre-allocated output
c = cell(sum(cellfun(@(wtEl) numel(wtEl.h),wtNodes)),1);
ca = f;
cOutRunIdx = 1;
cInRunIdxs = [1];
% Go over all nodes in breadth-first order
for jj=1:numel(wtNodes)
% Node filters to a cell array
hCell = cellfun(@(hEl) conj(flipud(hEl.h(:))),wtNodes{jj}.h(:),'UniformOutput',0);
% Node filters subs. factors
a = wtNodes{jj}.a;
% Node filters initial skips
if(doPer)
offset = cellfun(@(hEl) 1-numel(hEl.h)-hEl.offset,wtNodes{jj}.h);
else
offset = -(a-1);
end
filtNo = numel(hCell);
% Run filterbank
c(cOutRunIdx:cOutRunIdx + filtNo-1)=...
comp_filterbank_td(ca,hCell,a,offset,ext);
% Bookeeping. Store idxs of just computed outputs.
outRange = cOutRunIdx:cOutRunIdx+filtNo-1;
% Omit those, which are not decomposed further
outRange(rangeLoc{jj}) = [];
cInRunIdxs = [cInRunIdxs(2:end),outRange];
cOutRunIdx = cOutRunIdx + filtNo;
% Prepare input for the next iteration
% Scaling introduced in order to preserve energy
% (parseval tight frame)
% TO DO: Investigate how this scaling influences the |wpbest|
% algorithms.
if ~isempty(cInRunIdxs)
if do_scale
c{cInRunIdxs(1)} = c{cInRunIdxs(1)}/sqrt(2);
end
ca = c{cInRunIdxs(1)};
end
end

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks