samer@47
|
1 function tfdimage(TFD,N,m,fs,range,varargin)
|
samer@47
|
2 % TFDIMAGE: image of time frequency distribution with correct axes
|
samer@47
|
3 %
|
samer@47
|
4 % tfdimage(TFD,N,M,fs[,range])
|
samer@47
|
5 %
|
samer@47
|
6 % TFD: image matrix
|
samer@47
|
7 % fs: sampling rate in Hz
|
samer@47
|
8 % N: frame size (used to determine frequency scale)
|
samer@47
|
9 % m: hop size (used to derermine time scale)
|
samer@47
|
10 % range: if present, determines manual colour scaler. range(1)=dBs of dynamic range,
|
samer@47
|
11 % and range(2) is max value.
|
samer@47
|
12 % if range=[], uses default manual offset (13.5).
|
samer@47
|
13
|
samer@47
|
14 if nargin<4, fs=1; end
|
samer@47
|
15 opts=options('offset',0,varargin{:});
|
samer@47
|
16
|
samer@47
|
17 [T,F]=tfscale(fs,N,m,size(TFD));
|
samer@47
|
18 if fs>1000,
|
samer@47
|
19 imagesc(T+opts.offset,F/1000,10*log10(TFD));
|
samer@47
|
20 else
|
samer@47
|
21 imagesc(T+opts.offset,F,10*log10(TFD));
|
samer@47
|
22 end
|
samer@47
|
23 if nargin>=5
|
samer@47
|
24 if isempty(range), range=13.5; end
|
samer@47
|
25
|
samer@47
|
26 dBs=range(1);
|
samer@47
|
27 cax=caxis; cax(1)=cax(2)-dBs;
|
samer@47
|
28 if length(range)>1,
|
samer@47
|
29 cax=cax+range(2)-cax(2);
|
samer@47
|
30 end
|
samer@47
|
31 caxis(cax);
|
samer@47
|
32 end
|
samer@47
|
33 axis xy
|
samer@47
|
34 xlabel('time/s');
|
samer@47
|
35 if fs>1000,
|
samer@47
|
36 ylabel('frequency/kHz');
|
samer@47
|
37 else
|
samer@47
|
38 ylabel('frequency/Hz');
|
samer@47
|
39 end
|
samer@47
|
40
|
samer@47
|
41
|