function [C,A]=c_matrice(s,N,lseg,rseg);
% Syntax: C=c_matrice(s,N,lseg)
%      ou C=c_matrice(s,N,lseg,rseg)
%      ou [C,A]=c_matrice(s,N,lseg...)
% Fonction pour le calcul des coefficients cepstraux a partir du signal
%	s - vecteur signal
%	N - nombre des coefficients cepstraux
%	lseg - longeur du segment
%	rseg - recouvrement des segments (optionnel)
% Dans la matrice C, les vecteurs cepstraux sont stockes colonne par colonne
%    sans c(0)=0
% La matrice A (optionelle) contient les vecteurs de coeff. LPC stockes
%    colonne par colonne sans a(0)=1
% fenetrage de HAMMING

if(nargin==3),
 rseg=0;
end

M=floor((length(s)-rseg)/(lseg-rseg));	% no. de seg.
ham = hamming(lseg);

%-------------------------------------------------------------------------
C=zeros(N,M);    % init. de la matrice cepst.
if nargout==2,
 A=zeros(N,M);    % init. de la matrice LPC
end

pos=1;

for i=1:M,
% --- choix de la fenetre 
 fen=s(pos:pos+lseg-1) .* ham;		% hamming ...
 pos=pos+lseg-rseg;
 
% --- calcul de coeff. LPC 
 r=xcorr(fen);
 r(1:lseg-1)=[];			% supprime la 1ere moitie du vecteur.
 a=levinson(r,N)';
			% tout ca remplace: a=(lpc(fen,N))'; 

% === calcul du cepstre ============
 c=a_to_cepst(a);	% a partir de a(i)
 C(1:N,i)=c(2:N+1);
 if nargout==2,
  A(1:N,i)=a(2:N+1);
 end
 
 if(i/50==floor(i/50)),
  disp(i);
 end 			% indique l'avancement du calcul
 
end	% for i 
