function f1=zerlegung(f,h,k0,g,k1,J); 

% f gegebenes  Signal (Zeilenvektor)
% h Tiefpassfilter
% k0 Index des Anfangskoeffizienten von h
% g Hochpassfilter
% k1 Index des Anfangskoeffizienten von g
% J Anzahl der Level
% Die Zeilen von A enthalten am Schluss die Vektoren a^{-J}, c^{-1},...,c^{-J}
% Anfangs- und End-Indizes sind in den Vektoren  b und c gespeichert.

[L1,L2]=size(h);
[M1,M2]= size(g);
[N1,N2] = size(f);

A=zeros(J+1,N2);
a=zeros(1,N2);  % Hilfsvektor
b=zeros(J+1,1); % Indizes der Anfangskoeffizienten
c=zeros(J+1,1); %Indizes der Endkoeffizienten
b(1,1)=0;
c(1,1)=N2-1 ;
A(1,:)=f;
for j=1:J
  b(j+1,1)=ceil((1+b(1,1)-k1-M2)/2);
  c(j+1,1)=floor((c(1,1)-k1)/2);
  bneu=ceil((1+b(1,1)-k0-L2)/2);
  cneu=floor((c(1,1)-k0)/2);
  for k=b(j+1,1):c(j+1,1)
    r1=max((k1+2*k),b(1,1));
	r2=min((k1+M2-1+2*k),c(1,1));
    for r=r1:r2 A(j+1,k-b(j+1,1)+1)=A(j+1,k-b(j+1,1)+1)+g(r-2*k-k1+1)*A(1,r-b(1,1)+1);
	end;
  end;
  for k=bneu:cneu	
	r1=max([k0+2*k,b(1,1)]); r2=min([k0+L2-1+2*k,c(1,1)]);
    for r=r1:r2 a(1,k-bneu+1)=a(1,k-bneu+1)+h(r-2*k-k0+1)*A(1,r-b(1,1)+1);
	end;
  end;
  b(1,1)=bneu; c(1,1) = cneu;
  A(1,:)=a;
  a=zeros(1,N2);
end;
f1=[A,b,c]



 
