www.pudn.com > TimeFrequency.rar > CohenDist.m


function cwd = CohenDist(sig,sigma) 
% CohenDist -- Choi William Distribution 
%  Usage 
%    cwd = CohenDist(sig,sigma) 
%  Inputs 
%    sig     1-d signal 
%    sigma   Choi William distribution parameter 
%  Outputs 
%    cwd    complex-valued matrix representing the Choi & William 
%           distribution of periodic signal with rows corresponding 
%           to frequencies and columns corresponding to times. 
% 
%  Side Effects 
%    Image Plot of the Choi & William distribution 
% 
%  See Also 
%    Interpol2 
% 
%  References 
%    Mallat's book, sections 4.5.3 and 4.5.4 
% 
sig = sig(:); 
N   = length(sig); 
sig = Interpol2(sig); 
f   = [zeros(2*N,1); sig; zeros(2*N,1)]; 
ambig = zeros(N, N); 
phi   = zeros(N, N); 
smambig = zeros(N, N); 
n  = 1 : 2 : 2*N-1; 
 
for p = 0 : N-1, 
    tplus    = 2*N + n + p; 
    tminus   = 2*N + n - p; 
    x = conj(f(tplus)) .* f(tminus); 
    ambig(: , p+1) = fft(x); 
end 
 
i = (-N/2-1:N/2-2); 
ix = exp(-(i.^2)./(sigma.^2)); 
for j = -N/2-1:N/2-2, 
   phi(:,j+N/2+2) = (ix.^(j^2)'); 
end 
 
phi = fftshift(phi); 
smambig = (phi .* ambig); 
 
cwd = (ifft2(smambig))'; 
 
abstf = real(cwd(1:N/2,:)) .* (real(cwd(1:N/2,:))>= zeros(N/2,N)); 
tfmax = max(max(abstf)); 
tfmin = min(min(abstf)); 
colormap(1-gray(256)) 
%colormap(hot) 
image(linspace(0,N,N),linspace(0,N/2,N/2),256*(abstf-tfmin)/(tfmax-tfmin)); 
axis('xy') 
title(''); 
xlabel('Time') 
ylabel('Frequency') 
 
% Written by Maureen Clerc and Jerome Kalifa, 1997 
% clerc@cmapx.polytechnique.fr, kalifa@cmapx.polytechnique.fr 
 
     
     
     
%    
% Part of WaveLab Version 802 
% Built Sunday, October 3, 1999 8:52:27 AM 
% This is Copyrighted Material 
% For Copying permissions see COPYING.m 
% Comments? e-mail wavelab@stat.stanford.edu 
%