FILTERBANKREASSIGN Reassign filterbank spectrogram
Usage: sr = filterbankreassign(s,tgrad,fgrad,a,cfreq);
sr = filterbankreassign(s,tgrad,fgrad,a,g);
[sr,repos,Lc] = filterbankreassign(...);
Input parameters:
s : Spectrogram to be reassigned.
tgrad : Instantaneous frequency relative to original position.
fgrad : Group delay relative to original position.
a : Vector of time steps.
cfreq : Vector of relative center frequencies in ]-1,1].
g : Set of filters.
Output parameters:
sr : Reassigned filterbank spectrogram.
repos : Reassigned positions.
Lc : Subband lengths.
FILTERBANKREASSIGN(s,tgrad,fgrad,a,cfreq) will reassign the values of
the filterbank spectrogram s using the group delay fgrad and
instantaneous frequency tgrad. The time-frequency sampling
pattern is determined from the time steps a and the center
frequencies cfreq.
FILTERBANKREASSIGN(s,tgrad,fgrad,a,g) will do the same thing except
the center frequencies are estimated from a set of filters g.
[sr,repos,Lc]=FILTERBANKREASSIGN(...) does the same thing, but in addition
returns a vector of subband lengths Lc (Lc = cellfun(@numel,s))
and cell array repos with sum(Lc) elements. Each element corresponds
to a single coefficient obtained by cell2mat(sr) and it is a vector
of indices identifying coefficients from cell2mat(s) assigned to
the particular time-frequency position.
The arguments s, tgrad and fgrad must be cell-arrays of vectors
of the same lengths. Arguments a and cfreq or g must have the
same number of elements as the cell arrays with coefficients.
Examples:
---------
This example shows how to reassign a ERB filterbank spectrogram:
% Genrate 3 chirps 1 second long
L = 44100; fs = 44100; l = 0:L-1;
f = sin(2*pi*(l/35+(l/300).^2)) + ...
sin(2*pi*(l/10+(l/300).^2)) + ...
sin(2*pi*(l/5-(l/450).^2));
f = 0.7*f';
% Create ERB filterbank
[g,a,fc]=erbfilters(fs,L,'fractional','spacing',1/12,'warped');
% Compute phase gradient
[tgrad,fgrad,cs,c]=filterbankphasegrad(f,g,a);
% Do the reassignment
sr=filterbankreassign(cs,tgrad,fgrad,a,cent_freqs(fs,fc));
figure(1); subplot(211);
plotfilterbank(cs,a,fc,fs,60);
title('ERBlet spectrogram of 3 chirps');
subplot(212);
plotfilterbank(sr,a,fc,fs,60);
title('Reassigned ERBlet spectrogram of 3 chirps');
References:
N. Holighaus, Z. Průša, and P. L. Soendergaard. Reassignment and
synchrosqueezing for general time-frequency filter banks, subsampling
and processing. Signal Processing, 125:1--8, 2016. [1]http ]
References
1. http://www.sciencedirect.com/science/article/pii/S0165168416000141
Url: http://ltfat.github.io/doc/filterbank/filterbankreassign.html
See also: filterbankphasegrad, gabreassign.
Package: ltfat