⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tfrqview.m

📁 matlab里面有用的一个时频工具箱
💻 M
📖 第 1 页 / 共 2 页
字号:
function tfrqview(tfr,sig,t,method,p1,p2,p3,p4,p5);%TFRQVIEW Quick visualization of time-frequency representations.%       TFRQVIEW(TFR,SIG,T,METHOD,P1,P2,P3,P4,P5) allows a quick %       visualization of a time-frequency representation.%%       TFR     : time-frequency representation (MxN).%       SIG     : signal in time. If unavailable, put sig=[] as input%                 parameter.                    (default : []).%       T       : time instants                 (default : 1:N).%       METHOD  : name of chosen representation (default : 'TYPE1').%                 See the TFR* files for authorized names.%                 TYPE1 : the representation TFR goes in normalized%                       frequency from -0.5 to 0.5 ; %                 TYPE2 : the representation TFR goes in normalized%                       frequency from 0 to 0.5. %       P1...P5 : optional parameters of the representation : run the %                 file TFRPARAM(METHOD) to know the meaning of P1..P5 %                 for your method. %%	When you use the 'save' option in the main menu, you save all your%	variables as well as two strings, TfrQView and TfrView, in a mat %	file. If you load this file and do eval(TfrQView), you will restart%	the display session under tfrqview ; if you do eval(TfrView), you%	will obtain the exact layout of the screen you had when clicking on %	the 'save' button. %   %       Example : %        sig=fmsin(128); tfr=tfrwv(sig);%        tfrqview(tfr,sig,1:128,'tfrwv');%%       See also TFRVIEW, TFRSAVE, TFRPARAM.%       F. Auger, September 1994, July 1995 %       O. Lemoine, Oct 1995, May-July 1996.%       F. Auger, May 1998.%       Copyright (c) 1996 by CNRS (France).%%       ------------------- CONFIDENTIAL PROGRAM -------------------- %       This program can not be used without the authorization of its%       author(s). For any comment or bug report, please send e-mail to %       f.auger@ieee.org comp=computer;  %  so as to know the running computerMatlabVersion=version; MatlabVersion=str2num(MatlabVersion(1));% Tests on the input argumentsif nargin<1, error('At least one parameter required'); % at least the tfrend[tfrrow,tfrcol]=size(tfr);if nargin==1, sig=[]; t=1:tfrcol; method='type1'; % empty signalelseif nargin==2, t=1:tfrcol; method='type1';elseif nargin==3, method='type1';end[trow,tcol] = size(t);if (trow~=1), error('T must only have one row'); % t must be a row vectorend;if (tfrcol~=tcol), error('T must have as much elements as tfr has columns');end;[Nsig,Ncol]=size(sig);if Ncol>2, error('SIG must have one or two columns');end% Computation of Nf2, the number of interresting points in frequencymethod=upper(method);if istfr2(method), Nf2=tfrrow;elseif istfr1(method), Nf2=tfrrow/2; else error('Unknown representation. Use type1 or type2');end;% Computation of freq (vector of frequency samples) if istfraff(method), freq=eval(['p',num2str(nargin-4)]);   	% last input argument is freqs.else freq=(0.5*(0:Nf2-1)/Nf2);end% Initialization of the variables%if exist('options.mat'),% load options% colormap(SavedColorMap);%else threshold=5.0;  % visualization threshold linlogtfr=0;    % tfr visualization scale : 0 for linear 1 for logarithmic linlogspec=1;   % spectrum visualization scale sigenveloppe=0; % signal enveloppe visualization levelnumb=64;   % number of levels in the contour plot colmap=1;       % colormap index  display=2;      % display index  isgridsig=0;    % grid on signal isgridspec=0;   % grid on spectrum isgridtfr=0;    % grid on tfr  issig=0;        % display signal isspec=0;       % display spectrum iscolorbar=0;   % display colorbar fs=1.0;         % sampling frequency (Hz) fmin=0.0;       % smallest displayed frequency  fmax=0.5*fs;    % highest displayed frequency%end;% Test of analycityif ~isempty(sig), for k=1:Ncol,  % spec(:,k)=abs(fft(sig(min(t):max(t),k))).^2; Nsp=length(spec);  % modifications :  F. Auger (fog), 30/11/97  Lt_fog=max(t)-min(t)+1;     Nb_tranches_fog = floor(Lt_fog/tfrrow);  % fprintf('%f \n',Nb_tranches_fog);  spec(:,k)=zeros(tfrrow,1);  for Num_tranche_fog=0:Nb_tranches_fog-1,   % fprintf('%f \n',Num_tranche_fog);   spec(:,k)=spec(:,k)+abs(fft(sig(min(t)+tfrrow*Num_tranche_fog+(0:tfrrow-1),k))).^2;  end;  if (Lt_fog>Nb_tranches_fog*tfrrow),   spectre_fog=fft(sig(min(t)+tfrrow*Nb_tranches_fog:max(t),k),tfrrow);   spectre_fog=spectre_fog(:);   spec(:,k)=spec(:,k)+abs(spectre_fog).^2;  end;    % spec1=sum(spec(1:tfrrow/2,k));  % spec2=sum(spec(tfrrow/2+1:Nsp,k));  spec1=sum(spec(1:tfrrow/2,k));  spec2=sum(spec(tfrrow/2+1:tfrrow,k));    if spec2>spec1/10,   disp('Be careful : the signal is not analytic!');  end endend% Test of realityif (Ncol==2 & ~isreal(tfr)), disp('Cross distribution. As the result is complex, we display the real part.'); tfr=real(tfr);endChoiceDisplay     =  1; % All the possible values of the choice variableChoiceLayout      =  2;ChoiceSampling    =  3;ChoiceFreqBounds  =  4;ChoiceThreshold   =  5;ChoiceLinlog      =  6;ChoiceRedraw      =  7;ChoiceNewFigure   =  8;ChoiceSaveResults =  9;ChoiceSaveOptions = 10;ChoicePrint       = 11;ChoiceClose       = 12;CallTfrView = 1; % 1 to call tfrview, 0 not to do itRefreshFigure=1; % 1 to refresh figure every time, 0 to freezechoice=ChoiceSampling;while choice~=ChoiceClose,                       % while not close if RefreshFigure & CallTfrView,                 % Call to tfrview  linlog=linlogtfr+2*linlogspec+4*sigenveloppe;  isgrid=isgridsig+2*isgridspec+4*isgridtfr;  layout=issig+isspec*2+iscolorbar*4+1;  param = [display, linlog, threshold, levelnumb, Nf2, layout,...           fs, isgrid, fmin, fmax];  if (nargin<=4),   tfrview(tfr,sig,t,method,param);  elseif (nargin==5),   tfrview(tfr,sig,t,method,param,p1);  elseif (nargin==6),   tfrview(tfr,sig,t,method,param,p1,p2);  elseif (nargin==7),   tfrview(tfr,sig,t,method,param,p1,p2,p3);  elseif (nargin==8),   tfrview(tfr,sig,t,method,param,p1,p2,p3,p4);  elseif (nargin==9),   tfrview(tfr,sig,t,method,param,p1,p2,p3,p4,p5);  end; end; if (linlogtfr==0),                              % Lin/log scale of the tfr  linlogstr='Change to a logarithmic scale'; else  linlogstr='Change to a linear scale'; end; if (RefreshFigure==1),  redrawstr='Don''t redraw yet'; else  redrawstr='Redraw now'; end; % Main menu choice=menu ('TFRQVIEW MENU :',...              'Change the display mode',...       % ChoiceDisplay              'Change the display layout',...     % ChoiceLayout              'Change the sampling frequency',... % ChoiceSampling              'Change the frequency bounds',...   % ChoiceFreqBounds              'Change the threshold',...          % ChoiceThreshold              linlogstr,...                       % ChoiceLinlog              redrawstr,...                       % ChoiceRedraw              'New figure',...                    % ChoiceNewFigure              'Save results',...                  % ChoiceSaveResults              'Save options',...                  % ChoiceSaveOptions              'Print',...                         % ChoicePrint              'Close');                           % ChoiceClose  if (choice==ChoiceDisplay),                      % Change the display mode  OldDisplay=display;  display=menu('DISPLAY MODE :',...               'contour',...                      % 1               'imagesc',...                      % 2               'pcolor',...                       % 3               'surf',...                         % 4               'mesh',...                         % 5               'change the color map',...         % 6               'change the number of colors or levels',...  % 7               'cancel');                         % 8  if (display>=1)&(display<=5),   CallTfrView=1;  elseif (display==6),   if MatlabVersion>=5,    colmap=menu('COLOR MAP :',...                'hsv','jet','cool','bone','gray','hot','prism',...                'pink','colorcube','autumn','winter','spring','summer',...                'brighten','darken','permute','spin','cancel');    if     colmap== 1,  colormap(hsv(levelnumb));    elseif colmap== 2,  colormap(jet(levelnumb));    elseif colmap== 3,  colormap(cool(levelnumb));    elseif colmap== 4,  colormap(bone(levelnumb));    elseif colmap== 5,  colormap(gray(levelnumb));    elseif colmap== 6,  colormap(hot(levelnumb));    elseif colmap== 7,  colormap(prism(levelnumb));    elseif colmap== 8,  colormap(pink(levelnumb));    elseif colmap== 9,  colormap(colorcube(levelnumb));    elseif colmap==10,  colormap(autumn(levelnumb));    elseif colmap==11,  colormap(winter(levelnumb));    elseif colmap==12,  colormap(spring(levelnumb));    elseif colmap==13,  colormap(summer(levelnumb));    elseif colmap==14,  brighten(+0.20);    elseif colmap==15,  brighten(-0.10);    elseif colmap==16,  MyMap = colormap; colormap(flipud(MyMap));    elseif colmap==17,  spinmap;    end   else    colmap=menu('COLOR MAP :',...                'hsv','jet','cool','bone','gray','hot','prism',...                'brighten','darken','permute','spin','cancel');    if     colmap== 1,  colormap(hsv(levelnumb));    elseif colmap== 2,  colormap(jet(levelnumb));    elseif colmap== 3,  colormap(cool(levelnumb));    elseif colmap== 4,  colormap(bone(levelnumb));    elseif colmap== 5,  colormap(gray(levelnumb));    elseif colmap== 6,  colormap(hot(levelnumb));    elseif colmap== 7,  colormap(prism(levelnumb));    elseif colmap== 8,  brighten(+0.25);    elseif colmap== 9,  brighten(-0.25);    elseif colmap==10,  MyMap = colormap; colormap(flipud(MyMap));    elseif colmap==11,  spinmap;    end   end   display=OldDisplay; CallTfrView=0;  elseif (display==7),   fprintf(' Old number of levels: %f\n',levelnumb); levelold=levelnumb;   levelnumb=input(' New number of levels: ');   if isempty(levelnumb),    levelnumb=levelold; CallTfrView=0;   else    if levelnumb<levelold,     CallTfrView=1;     MyMap = colormap; MyMap=MyMap(1:levelnumb,:); colormap(MyMap);    elseif levelnumb>levelold,     CallTfrView=1;     MyMap = ones(levelnumb, 3); MyMap(1:levelold,:)=colormap;      fprintf('warning : the colormap size has been increased by identical vectors\n');     fprintf('You should redefine the colormap\n');    else     CallTfrView=0;    end   end   display=OldDisplay;   elseif (display==8),   display=OldDisplay; CallTfrView=0;  end; elseif (choice==ChoiceLayout),                 % Change the display layout

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -