<< tfrstft Linear Time-Frequency Processing Modification >>

stftb >> stftb > Linear Time-Frequency Processing > tfrsurf

tfrsurf

extract from a time-frequency representation the biggest energy dots

Calling Sequence

[tfr2,OrderedSurfaces] = tfrsurf(tfr)
[tfr2,OrderedSurfaces] = tfrsurf(tfr, threshold)
[tfr2,OrderedSurfaces] = tfrsurf(tfr, threshold, keep)
[tfr2,OrderedSurfaces] = tfrsurf(tfr, threshold, keep, trace)

Parameters

TFR :

time-frequency representation.

THRESHOLD :

a positive scalar: the energy threshold, in %

KEEP :

a positive integer value: the number of dots to keep

TRACE :

if nonzero, the progression of the algorithm is shown (default : 0).

Examples

N = 256;
sig = fmlin(N,0.1,0.3) + fmlin(N,0.3,0.4) + 2*fmlin(N,0.05,0.2).*amgauss(N,190,70);
clf; gcf().color_map = jetcolormap(128);
ax1 = gca();
ax1.axes_bounds = [0,0,1,1/3];ax1.tight_limits="on";
plot(sig);title('Signal')

[tfr,t,f] = tfrwv(sig,1:N,128);
ax2 = newaxes(); ax2.axes_bounds = [0,1/3,1/3,2/3];
ax2.tight_limits = "on";
grayplot(t,f,tfr')
title 'original tfr'

[tfr2,OrderedSurfaces] = tfrsurf(tfr,5,3);
ax3 = newaxes(); ax3.axes_bounds = [1/3,1/3,1/3,2/3];
ax3.tight_limits = "on";
grayplot(t,f,tfr2')
title 'modified tfr'

ax4 = newaxes(); ax4.axes_bounds = [2/3,1/3,1/3,2/3];
ax4.tight_limits = "on";
plot(1:10,OrderedSurfaces(1:10),'-',1:10,OrderedSurfaces(1:10),'o'); //semilogy
title 'number of points of the 10 biggest dots'

See also

Authors


Report an issue
<< tfrstft Linear Time-Frequency Processing Modification >>