function f2=rekonstruktion(f1,h,k0,g,k1,J); 

% f1 Matrix der gefilterten Vektoren, wie im Zerlegungsalgorithmus gespeichert
% h Tiefpassfilter
% k0 Index des Anfangskoeffizienten von h
% g Hochpassfilter
% k1 Index des Anfangskoeffizienten von g
% J Anzahl der Level

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

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

%f2 enthŠlt den rekonstruierten Vektor, der letzte Wert in f2 gibt den Anfangsindex des Vektors an



 
