function T07_Aufgabe_Approximation2

%% 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=[1, 2, ... % Punkt 1
            3, 2, ... % Punkt 2
            2  ,  ... % Steigung 1. Gerade
            -2];      % Steigung 3. Gerade

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

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

%% Ansatzfunktion
function y=gerade123(par,x)
x1=par(1);
y1=par(2);
x2=par(3);
y2=par(4);
m1=par(5);
m2=(y2-y1)/(x2-x1);
m3=par(6);
for i=1:length(x)
    if x(i)<=x1
        y(i)=m1*(x(i)-x1)+y1; % Gerade 1: aus Punkt-Steigungsform
    elseif x(i)<=x2
        y(i)=m2*(x(i)-x1)+y1; % Gerade 2: aus 2-Punkte-Form
    else
        y(i)=m3*(x(i)-x2)+y2; % Gerade 3: aus Punkt-Steigungsform
    end
end
end
