function T07_Aufgabe_Approximation

%% Messwerte erzeugen
% Körperkontur:
stuetzpunkte.x=[0 1.5 3 4];
stuetzpunkte.y=[1 2   2 1];

x=0:.01:4;
y=interp1(stuetzpunkte.x,stuetzpunkte.y,x);

% Rauschen addieren:
x_messung=x+0.05*(randn(1,length(x))-0.5);
y_messung=y+0.05*(randn(1,length(y))-0.5);

%% Approximation:
parameter0=[0 1.5 3 4,... % Anfangswerte für x-Werte
            1  2  2 1];   % Anfangswerte für y-Werte

parameter_opt = lsqcurvefit(@geraden_interp,parameter0,x_messung,y_messung);

plot(x,y,'-',...
     x_messung,y_messung,'*',...
     x,geraden_interp(parameter_opt,x),'-');
grid on; legend('orginal','Messung','Approximation')
   
end

%% Ansatzfunktion
% als Ansatzfunktion wurde hier eine lineare Interpolationsfunktion
% zwischen den Rand- und Eckpunkten gewählt.
% Die zu optimierenden Parameter sind die x- und y-Werte
% der Punkte.
function y=geraden_interp(par,x)
y=interp1(par(1:4),par(5:8),x,'linear','extrap');
end
