function cwtGabor = cwtGabor(s,nb_voix)

%              cwtGabor=cwtGabor(s,nb_voix);
%
% Calcule la transformée en ondelettes continue 
%          (a,b) ---> (1/sqrt (a)) * cwt_psi [S] (a,b)  
% d'un signal analogique S discrétisé en un signal digital de longueur
% n=2^p (donné en colonne) lorsque l'ondelette est l'ondelette de Gabor. En
% sortie, on obtient une matrice à n colonnes et nb_voix * (p-1) lignes ;
% les valeurs du paramètre a d'échelle sont telles que log_2(a) varie entre
% 2 et p, chacune des p-1 octaves dyadiques étant divisée en nb_voix
% canaux. 


w0=5.33644;
n=length(s);
nb_octaves=floor(log2(n))-1;
nb_echelles= nb_voix .* nb_octaves;
xi   = [ (0: (n/2)) (((-n/2)+1):-1) ] .* (2*pi);

k_echelle=1;
echelle=4;
cwtGabor = zeros(nb_echelles,n);
xhat=fft(s');
for j=1:nb_octaves,
	    for l=0:nb_voix-1,
		   q_echelle=echelle .* (2^(l/nb_voix));
		   omega=xi ./q_echelle;
           psi_hat=exp(-(omega-w0).^2 ./2);
           w_hat=xhat.*psi_hat; 
           w=ifft(w_hat);	
           cwtGabor(k_echelle,:)=w;
           k_echelle=k_echelle+1;
        end
echelle=echelle .*2;
end 

		    
    
