📄 friedman.m
字号:
function tifd=friedman(tfr,hat,t,method,trace);
%FRIEDMAN Instantaneous frequency density.
% TIFD = FRIEDMAN(TFR,HAT,T,METHOD,TRACE) computes the
% time-instantaneous frequency density (defined by Friedman [1])
% of a reassigned time-frequency representation.
%
% TFR : time-frequency representation, (N,M) matrix.
% HAT : complex matrix of the reassignment vectors.
% T : the time instant(s) (default : (1:M)).
% METHOD: chosen representation (default : 'tfrrsp').
% TRACE : if nonzero, the progression of the algorithm is shown
% (default : 0).
% TIFD : time instantaneous-frequency density. When called without
% output arguments, FRIEDMAN runs TFRQVIEW.
%
% WARNING : TIFD is not an energy distribution, but an estimated
% ------- probability distribution !
%
% Example :
% sig=fmlin(128,0.1,0.4); h=window(47,'Kaiser');
% t=1:2:127; [tfr,rtfr,hat]=tfrrpwv(sig,t,128,h);
% friedman(tfr,hat,t,'tfrrpwv',1);
%
% See also : RIDGES.
% F. Auger, August 1994, Decembre 1995.
% 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
%
% [1] : D. H. Friedman, "Instantaneous Frequency vs Time : An
% Interpretation of the Phase Structure of Speech", Proc. IEEE
% ICASSP, pp. 29.10.1-4, Tampa, 1985.
if (nargin<3),
error('At least 2 parameters required');
end;
[tfrrow,tfrcol]=size(tfr);
[hatrow,hatcol]=size(hat);
if (nargin==2),
t=1:tfrcol; method='tfrrsp'; trace=0;
elseif (nargin==3),
method='tfrrsp'; trace=0;
elseif (nargin==4),
trace=0;
end;
[trow,tcol] = size(t);
if (trow~=1),
error('T must only have one row');
elseif (tfrrow~=hatrow)|(tfrcol~=hatcol),
error('tfr and hat must have the same size');
end;
tifd=zeros(tfrrow,tfrcol);
bins=0.5+(0:tfrrow-1);
threshold=sum(sum(tfr))*0.5/(tfrrow*tfrcol);
if trace, fprintf ('\nFriedman distribution: \n'); end;
for j=1:tfrcol,
if trace, disprog(j,tfrcol,10); end;
indices=find(tfr(:,j)>threshold);
if (length(indices)>=1),
[occurences,trash]=hist(real(hat(indices,j)),bins);
tifd(:,j)=occurences';
end;
end;
tifd=tifd/sum(sum(tifd));
method=upper(method);
if nargout==0,
tfrqview(tifd,[],t,method);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -