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

📄 timefreq.m

📁 很多matlab的源代码
💻 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 + -