?? tfrview.m
字號:
% spec=spec((round(f1*2*(Nf4-1)/fs)+1):(round(f1*2*(Nf4-1)/fs)+Nf2),:);% freqs=linspace(f1,f2,Nf2); for k=1:Ncol, freqs=linspace(freqr(1),freqr(Nf2),Nf2); spec=interp1(0.5*fs*(0:Nf2-1)/Nf2,spec(1:Nf2,k),freqs); end; else freqs=freqr; spec=spec(1:Nf2,:); end Maxsp=max(max(spec)); if linlogspec==0, plot(freqs,spec); title('Linear scale'); set(axspec,'YTickMode', 'auto'); set(axspec,'Ylim', [Maxsp*threshold*0.01 Maxsp*1.2]); set(axspec,'Xlim', [fmin*fs fmax*fs]); else plot(freqs,10*log10(spec/Maxsp)); title('Log. scale [dB]'); set(axspec,'Ytickmode','auto'); set(axspec,'Ylim',[10*log10(threshold*0.01) 0]); set(axspec,'Xlim', [fmin*fs fmax*fs]); end xlabel('Energy spectral density'); Nsp=length(spec); set(gca,['X' TickLabelStr],[],'view',[-90 90]); end; if iscolorbar, % Is there a color bar ? PositionTfr=get(axtfr,'Position'); set(axtfr,'Position',PositionTfr-[0 0 0.03 0]); set(axcb, 'Position',[PositionTfr(1)+PositionTfr(3)-0.01,... PositionTfr(2) 0.01 PositionTfr(4)]); axes(axcb); Ncolors=length(colormap); [cmin,cmax]=caxis; colorvect=linspace(cmax,cmin,Ncolors); imagesc(colorvect'); axis('off'); if issig, % there is a signal PositionSig=get(axsig,'Position'); set(axsig,'Position',PositionSig-[0 0 0.03 0]); end end axes(axtfr); % Display the tfr if (tcol==1), plot(freqr,tfr(1:Nf2)); set(axtfr,'Xlim', [fmin*fs fmax*fs]); else if strcmp(computer,'MAC'), tfr=flipud(tfr(1:Nf2,:)); else tfr=tfr(1:Nf2,:); end; indmin=find(tfr<mini); tfr(indmin)=mini*ones(1,length(indmin)); indmax=find(tfr>maxi); tfr(indmax)=maxi*ones(1,length(indmax)); if isaffine & (display==2), fprintf('imagesc does not support non-linear scales for axes. Replaced by pcolor.\n'); display=3; end; if display==1, % contour contour(ts,freqr,tfr,levels); % contour(tfr,levels,ts,freqr); set(axtfr,'Ylim', [fmin*fs fmax*fs]); DisplayStr=', contour'; elseif display==2, % imagesc if linlogtfr==0, imagesc(ts,freqr,tfr); axis('xy'); else imagesc(ts,freqr,log10(tfr));axis('xy'); end set(axtfr,'Ylim', [fmin*fs fmax*fs]); DisplayStr=', imagesc'; elseif display==3, % pcolor if linlogtfr==0, pcolor(ts,freqr,tfr); shading interp; else pcolor(ts,freqr,log10(tfr)); shading interp; end set(axtfr,'Ylim', [fmin*fs fmax*fs]); DisplayStr=', pcolor'; elseif display==4, % surf if linlogtfr==0, surf(ts,freqr,tfr); shading interp; zlabel('Amplitude'); axis([ts(1) ts(tcol) fmin*fs fmax*fs mini maxi]); else surf(ts,freqr,log10(tfr)); shading interp; zlabel('Positive values'); axis([ts(1) ts(tcol) fmin fmax log10(mini) log10(maxi)]); end DisplayStr=', surf'; elseif display==5, % mesh if linlogtfr==0, mesh(ts,freqr,tfr); shading interp; zlabel('Amplitude'); axis([ts(1) ts(tcol) fmin*fs fmax*fs mini maxi]); else mesh(ts,freqr,log10(tfr));shading interp; zlabel('Positive values'); axis([ts(1) ts(tcol) fmin*fs fmax*fs log10(mini) log10(maxi)]); end DisplayStr=', mesh'; end % Define the title and check the input arguments depending on 'method' method=method(4:length(method)); if nargin==5, % if there is no additional parameters, do the best. title([method, LinLogStr,DisplayStr,... ', Threshold=',num2str(threshold),'%']); elseif strcmp(method,'WV' ) | strcmp(method,'MH') | ... strcmp(method,'PAGE'), % no parameters title([method,', Nf=',num2str(Nf2), LinLogStr,DisplayStr,... ', Threshold=',num2str(threshold),'%']); elseif strcmp(method,'PWV' )|strcmp(method,'PMH' )| ... strcmp(method,'SP' )|strcmp(method,'PPAGE')| ... strcmp(method,'RSP' )|strcmp(method,'RPPAG')| ... strcmp(method,'RPWV' )|strcmp(method,'RPMH' ), h=p1;[hrow,hcol]=size(h); Lh=(hrow-1)/2; % one parameter if (hcol~=1)|(rem(hrow,2)==0), error('h must be a smoothing window with odd length'); end; title([method, ', Lh=',num2str(Lh), ', Nf=',num2str(Nf2),... LinLogStr, DisplayStr,', Threshold=',num2str(threshold),'%']); elseif strcmp(method,'STFT'), % short-time fourier transform case h=p1;[hrow,hcol]=size(h); Lh=(hrow-1)/2; if (hcol~=1)|(rem(hrow,2)==0), error('h must be a smoothing window with odd length'); end; title(['|',method, '|^2, Lh=',num2str(Lh),... ', Nf=',num2str(Nf2), LinLogStr, DisplayStr,', Thld=',... num2str(threshold),'%']); elseif strcmp(method,'SPWV' ) | strcmp(method,'MHS' )| ... strcmp(method,'RSPWV') | strcmp(method,'RMHS' )| ... strcmp(method,'ZAM' ) | strcmp(method,'RIDBN')|... strcmp(method,'BJ' ) | strcmp(method,'RIDB' )| ... strcmp(method,'RIDH' ) | strcmp(method,'RIDT' ), g=p1; [grow,gcol]=size(g); Lg=(grow-1)/2; if (gcol~=1)|(rem(grow,2)==0), error('g must be a smoothing window with odd length'); end; h=p2; [hrow,hcol]=size(h); Lh=(hrow-1)/2; if (hcol~=1)|(rem(hrow,2)==0), error('h must be a smoothing window with odd length'); end; title([method,', Lg=',num2str(Lg),', Lh=',num2str(Lh),... ', Nf=',num2str(Nf2),LinLogStr, DisplayStr,... ', Threshold=',num2str(threshold),'%']); elseif strcmp(method,'MMCE'), h=p1;[hrow,hcol]=size(h); Lh=(hrow-1)/2; if (rem(hrow,2)==0), error('h must be a smoothing window with odd length'); end; title([method, ', Lh=',num2str(Lh), ', Nf=',num2str(Nf2),... LinLogStr, DisplayStr,', Threshold=',num2str(threshold),'%']); elseif strcmp(method,'CW' ) | strcmp(method,'BUD'), g=p1; [grow,gcol]=size(g); Lg=(grow-1)/2; if (gcol~=1)|(rem(grow,2)==0), error('g must be a smoothing window with odd length'); end; h=p2; [hrow,hcol]=size(h); Lh=(hrow-1)/2; if (hcol~=1)|(rem(hrow,2)==0), error('h must be a smoothing window with odd length'); end; sigma=p3; title([method,', Lg=',num2str(Lg),', Lh=',num2str(Lh),... ' sigma=',num2str(sigma),', Nf=',num2str(Nf2),... LinLogStr, DisplayStr, ', Threshold=',num2str(threshold),'%']); elseif strcmp(method,'GRD') g=p1; [grow,gcol]=size(g); Lg=(grow-1)/2; if (gcol~=1)|(rem(grow,2)==0), error('g must be a smoothing window with odd length'); end; h=p2; [hrow,hcol]=size(h); Lh=(hrow-1)/2; if (hcol~=1)|(rem(hrow,2)==0), error('h must be a smoothing window with odd length'); end; title([method,', Lg=',num2str(Lg),', Lh=',num2str(Lh),... ', rs =',num2str(p3), ', M/N =',num2str(p4), ... ', Nf =',num2str(Nf2), ... LinLogStr, DisplayStr, ', Threshold=',num2str(threshold),'%']); elseif strcmp(method,'MSC' ) | strcmp(method,'RMSC' ) f0T=p1; if (f0T<=0), error('f0T must be positive'); end; title([method, ', f0T=',num2str(f0T), ', Nf=',num2str(Nf2),... LinLogStr, DisplayStr, ', Threshold=',num2str(threshold),'%']); elseif strcmp(method,'RGAB' ) Nh=p1; if (Nh<=0), error('Nh must be positive'); end; title([method, ', Nh=',num2str(Nh), ', Nf=',num2str(Nf2),... LinLogStr, DisplayStr, ', Threshold=',num2str(threshold),'%']); elseif strcmp(method,'DFLA' ) | strcmp(method,'UNTER' )| ... strcmp(method,'BERT' ), N=p1; if (N<=0), error('N must be positive'); end; title([method, ', N=',num2str(N), LinLogStr, DisplayStr, ', Threshold=',... num2str(threshold), '%']); elseif strcmp(method,'SCALO'), Nh0=p1; N=p2; if (Nh0<0), error('Nh0 must be positive'); end; if (N<=0), error('N must be positive'); end; if (Nh0>0), title([method, ', Morlet wavelet, Nh0=', num2str(Nh0), ... ', N=',num2str(N), LinLogStr, DisplayStr, ', Thld=',... num2str(threshold), '%']); else title([method, ', Mexican hat, N=',num2str(N), LinLogStr, DisplayStr, ... ', Thld=', num2str(threshold), '%']); end elseif strcmp(method,'ASPW'), Nh0=p1; Ng0=p2; N=p3; if (Nh0<0), error('Nh0 must be positive'); end; if (Ng0<0), error('Ng0 must be positive'); end; if (N<=0), error('N must be positive'); end; if (Nh0>0), title([method, ', Morlet wlt, Nh0=', num2str(Nh0), ', Ng0=',... num2str(Ng0), ', N=',num2str(N), LinLogStr, DisplayStr, ', Thld=',... num2str(threshold), '%']); else title([method, ', Mexican hat, Ng0=',num2str(Ng0),... ', N=',num2str(N), LinLogStr, DisplayStr, ', Thld=',... num2str(threshold), '%']); end elseif strcmp(method,'SPAW'), K=p1; Nh0=p2; Ng0=p3; N=p4; if (Nh0<0), error('Nh0 must be positive'); end; if (Ng0<0), error('Ng0 must be positive'); end; if (N<=0), error('N must be positive'); end; if (Nh0>0), title([method, ', K=', num2str(K), ', Morlet wlt, Nh0=',... num2str(Nh0), ', Ng0=',... num2str(Ng0), ', N=',num2str(N), LinLogStr, DisplayStr, ', Thld=',... num2str(threshold), '%']); else title([method, ', K=', num2str(K), ', Mexican hat, Ng0=',... num2str(Ng0),', N=',num2str(N), LinLogStr, DisplayStr, ', Thld=',... num2str(threshold), '%']); end elseif strcmp(method,'GABOR'), N=p1; Q=p2; h=p3; [hrow,hcol]=size(h); Lh=(hrow-1)/2; if (hcol~=1)|(rem(hrow,2)==0), error('h must be a smoothing window with odd length'); end; title([method, ', Lh=',num2str(Lh), ', Nf=',... num2str(Nf2),', N=',num2str(N),', Q=',num2str(Q),... LinLogStr, DisplayStr, ', Thld=',num2str(threshold),'%']); end;end% add the correct legend on the axesif unitHz==1, xlabel('Time [s]'); ylabel('Frequency [Hz]');elseif unitHz==2, xlabel('Time [ms]'); ylabel('Frequency [kHz]');elseif unitHz==3, xlabel('Time [祍]'); ylabel('Frequency [MHz]');endif (isgridsig & issig), % Updating of the grids axes(axsig); grid on elseif (~isgridsig & issig), axes(axsig); grid offend if (isgridspec & isspec), axes(axspec); grid onelseif (~isgridspec & isspec), axes(axspec); grid offend if (isgridtfr), % upating of the grid on the tfr axes(axtfr); grid on elseif (~isgridtfr), axes(axtfr); grid offend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -