IFILTERBANKITER Filter bank iterative inversion
Usage: f=ifilterbankiter(c,g,a);
IFILTERBANKITER(c,g,a) iteratively synthesizes a signal f from the
coefficients c which were obtained using the filters stored in g for
a channel subsampling rate of a (the hop-size).
The filter bank g and the subsampling rate a must be the same
as used in FILTERBANK or UFILTERBANK.
This function is useful if there is no way how to explicitly compute
a dual system using FILTERBANKDUAL or FILTERBANKREALDUAL.
Additional parameters
---------------------
The function calls FRSYNITER and passes all the optional arguments to it.
Please refer to help of FRSYNITER for further details.
Please note that by default, the function expects filterbank g*
to be created for real signals i.e. g cover only the positive frequencies.
Additional flag 'complex' is required if the filterbank is defined for
positive and negative frequencies.
Examples:
---------
The following example compares convergence rates of CG and PCG for a
filterbank which forms a frame, but it is neither uniform or painless:
[f,fs] = greasy; L = size(f,1);
[g,a,fc]=erbfilters(fs,L,'fractional','bwmul',0.6,'redmul',4/5,'complex');
filterbankfreqz(g,a,L,'plot','linabs');
% Filterbankdual does not work
try
gd=filterbankdual(g,a,L);
catch
disp('FILTERBANKDUAL exited with error.');
end
c = filterbank(f,g,a);
[fpcg,~,iterpcg] = ifilterbankiter(c,g,a,'complex','pcg');
[fcg,~,itercg] = ifilterbankiter(c,g,a,'complex','cg');
fprintf('CG achieved error %e in %d iterations.n',norm(f-fcg), itercg);
fprintf('PCG achieved error %e in %d iterations.n',norm(f-fpcg), iterpcg);
Similar example with real filterbank:
[f,fs] = greasy; L = size(f,1);
[g,a,fc]=erbfilters(fs,L,'fractional','bwmul',0.6,'redmul',4/5);
filterbankfreqz(g,a,L,'plot','linabs');
% Filterbankrealdual does not work
try
gd=filterbankrealdual(g,a,L);
catch
disp('FILTERBANKREALDUAL exited with error.');
end
c = filterbank(f,g,a);
[fpcg,~,iterpcg] = ifilterbankiter(c,g,a,'pcg');
[fcg,~,itercg] = ifilterbankiter(c,g,a,'cg');
fprintf('CG achieved error %e in %d iterations.n',norm(f-fcg), itercg);
fprintf('PCG achieved error %e in %d iterations.n',norm(f-fpcg), iterpcg);
References:
T. Necciari, P. Balazs, N. Holighaus, and P. L. Soendergaard. The ERBlet
transform: An auditory-based time-frequency representation with perfect
reconstruction. In Proceedings of the 38th International Conference on
Acoustics, Speech, and Signal Processing (ICASSP 2013), pages 498--502,
Vancouver, Canada, May 2013. IEEE.
T. Necciari, N. Holighaus, P. Balazs, Z. Průša, P. Majdak, and
O. Derrien. Audlet filter banks: A versatile analysis/synthesis
framework using auditory frequency scales. Applied Sciences, 8(1),
2018. [1]http ]
References
1. http://www.mdpi.com/2076-3417/8/1/96
Url: http://ltfat.github.io/doc/filterbank/ifilterbankiter.html
See also: filterbank, ufilterbank, ifilterbank, filterbankdual.
Package: ltfat