function [Decomposition,Etiquettes]=MERGE2(s,nb_niveaux,K);

%        [Decomposition, Etiquettes]=MERGE2(s,nb_niveaux,K);
%
% Décompose un signal digital s (donné en ligne) suivant la procédure MERGE
% associée à l'ondelette de Daubechies à 4 paramètres. Le nombre de niveaux
% est la seconde entrée. Les lignes de la matrice Decomposition sont les
% composants obtenus après décomposition; les lignes de la matrice
% Etiquettes correspondent aux étiquettes de ces divers composants avec ce
% codage: R = prise de résumé, D = prise de détail, O = opération neutre
% (opérateur identité). L'entropie est l'entropie de Shannon non
% normalisée. L'entrée K correspond au nombre de zéros ajoutés de part et
% d'autre du signal digital original s. 

s=[zeros(1,K) s zeros(1,K)]; 
N=length(s);
Decomposition = [];
Etiquettes = [];
r=R2(s);
d=D2(s);
ex=entropie(s);
if nb_niveaux ==1
	efs=entropie(r);
	efd=entropie(d);
	mfs=r;
    mfd=d;
    ir=R2etoile(r);
    id=D2etoile(d);
    if efs+efd < ex
      Decomposition =[ir;id];
      Etiquettes =['R';'D'];
    else
      Decomposition = s;
      Etiquettes = ['O'];
    end
else
[efs, mfs, ms]=MERGE2_aux(r,nb_niveaux-1);
[efd, mfd, md]=MERGE2_aux(d,nb_niveaux-1);
if efs+efd < entropie(s)
   [nrs ncs]=size(mfs);
   for i=1:nrs
	  [nrm ncm]=size(Decomposition);
      ir=R2etoile(mfs(i,:));
      irr=['R' ms(i,:)]; 
	  if ncm~=0
			if ncm <length(ir)
				ir=ir(1:ncm);
			else
				ir=[ir zeros(1,(ncm-length(ir)))];
			end;
	  end;		
      Decomposition = [Decomposition ; ir];
      Etiquettes =[Etiquettes ; irr];
	end;	
    [nrd ncd]=size(mfd);
	for i=1:nrd
	  [nrm ncm]=size(Decomposition);
      id=D2etoile(mfd(i,:));
      idd=['D' md(i,:)];
	  if ncm ~= 0
			if ncm <length(id)
				id=id(1:ncm);
			else
				id=[id zeros(1,(ncm-length(id)))];
			end;
	  end;
      Decomposition = [Decomposition ;id];
      Etiquettes =[Etiquettes ; idd];
   end;			
else
   Decomposition =s;
   Etiquettes =['0'];
end;
end;