📄 timefreq.m
字号:
function timefreq(x,m,ol,win,p1)
% TIMEFREQ Time-Frequency (Waterfall) plot.
%
% TIMEFREQ(X,M,OL,WIN,P1) Time-Frequency plot for vector/array X
% M is the number of points per section (default: 0.1*length(X))
% OL is the percent overlap (default=50). 50 is a good starting point
% WIN is the window type (default: 'hamming').
% P1: Additional parameters for some windows. Use help window for more
%
% TIMEFREQ (with no input arguments) invokes the following example:
%
% % Time-Frequency plot for a 1000 point chirp signal between
% % F=0.2-0.4 with 64 points/section, 60% overlap and hamming window
% >>z = chirp([0.2 0.4],1000);
% >>timefreq(z,64,60)
% ADSP Toolbox: Version 2.0
% For use with "Analog and Digital Signal Processing", 2nd Ed.
% Published by PWS Publishing Co.
%
% Ashok Ambardar, EE Dept. MTU, Houghton, MI 49931, USA
% http://www.ee.mtu/faculty/akambard.html
% e-mail: akambard@mtu.edu
% Copyright (c) 1998
if nargin==0,help timefreq,disp('Strike a key to see results of the example')
pause,z=chirp([0.2 0.4],1000);
vx=matverch;
if vx < 4, eval('clg');else,eval('clf');end
timefreq(z,64,60);return,end
[mx,nx]=size(x);
if mx==1,x=x(:);n=nx;else,n=mx;end
if nargin<4,win='hamming';end
if nargin<3,ol=50;end
if nargin<2,m=max([16,fix(0.1*n)]);end
if m>n,m=n;end
s=fix(ol*m/100);
k=fix((n-s)/(m-s));
l=1:m;
if nargin==5,w=window(win,m,p1);
else w=window(win,m);
end
w=w(:);
%FOR PSD
p=zeros(m,1);
for i=1:k
xw=x(l).*w;
l=l+(m-s);
xf=abs(fft(xw));
sl(i,:)=xf.';
p=p+xf.*xf;
end
%FOR WATERFALL
sm=max(sl');
smm=max(sm); %%%new for normalizing all sections
for i=1:k,
%sl(i,:)=sl(i,:)/sm(i);
sl(i,:)=sl(i,:)/smm; %%new for normalized sections
sl(i,:)=sl(i,:)+i-1;end
sl=sl/k;
f=(0:m/2)/m;
v=[0 0.5 0 1];
axis(v);
%for i = 1:k,axis(v);plot(f,sl(i,1:m/2+1)),hold on,end
for i = 1:k,axis(v);plot(f,sl(i,1:length(f))),hold on,end
title('Time-Frequency Spectrum')
xlabel('Digital Frequency');ylabel('Normalized Time');
subplot,hold off
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -