function f1=interpolation(g,f,down,N2)  % verbessert


% g gegebenes reduziertes Signal (Zeilenvektor)
% f Originalsignal (nur zur Illustration)
% down Sampling Rate des Downsamplings
% Interpolationsfunktion unten wŠhlen
% N2 Anzahl der zu rekonstruierenden Daten
% Es wird angenommen, dass die erste Komponente von g und dem zu konstruierenden Signal Ÿbereinstimmen.

[L,N]=size(g);




f2=zeros(1,10*(N2-1)+1); 
%f2 ist das (genauere) rekonstruierte Signal (mit 10*(N2-1)-1 berechneten Werten) zur graphischen Darstellung
for l=down*10:10*(N2+down-1)
   for j=1:N f2(l-down*10+1)=f2(l-down*10+1)+g(j)*constant(l/down/10 -j);  end; %hier Interpolationsfunktion Šndern!
end;

x=1:0.1:N2;
y=1:1:N2;
z=1:down:N2;
%f2

% Plotten der Signale f2, f und g in einem Bild
plot(x,f2)
hold on
plot(y,f, 'bd')
plot(z,g, 'ro')
hold off


for l=0:N2-1
f1(l+1)=f2(1+10*l); end;  %f1 ist das rekonstruierte diskrete Signal
 

% Interpolationsfunktionen

function g1=constant(x)
if abs(x)<1/2 g1=1; elseif x==1/2 g1=1; else g1=0; end;

function g1=linear(x)
if abs(x)<1 g1=1-abs(x); else g1=0; end; % Hutfunktion

function g1=truncsinc(x)
if abs(x)<2 g1=sinc(x); else g1=0; end; % abgeschnittene sinc-Funktion

function z=sinc(x)
%skalierte sinc-Funktion
if (abs(x)<0.00001) z=1-(pi*x).^2./6+(pi*x).^4/120-(pi*x).^6/5040;
else z=sin(pi*x)./(pi*x);
end;