function ex14()
% a. Schubkurbelschwingung, Ortskurve
f = @(t, la) la*cos(2*pi*t) + sqrt(1 - la^2*sin(2*pi*t).^2);

la1 = 0.4;
la2 = 0.99;

tmax = 2;
t = [0:tmax/400:tmax];

x1 = f(t, la1);
x2 = f(t, la2);

plot(t, x1, t, x2);
ylabel("x(t)","FontSize",12);
xlabel("t","FontSize",12);
axis([0 tmax 0 2])
leg1 = legend("\lambda=0.4", "\lambda=0.99");
set(leg1, "Position",[0.6 0.8 0.1 0.1])

bild = getframe(gcf);
imwrite(bild.cdata, "bild42.png");

% b. Schubkurbelschwingung, Spektrum

T = 100;
N = 4096;

la = 0.4;
fn = plotSpectrum(@(t) f(t, la) , T, N, "b-")
title("Spektrum der Schubkurbelschwingung für \lambda = 0.4","FontSize",12)
axis([0 10 0 0.25])
bild = getframe(gcf);
imwrite(bild.cdata, "bild43.png");

la = 0.99;
fn = plotSpectrum(@(t) f(t, la) , T, N, "b-")
title("Spektrum der Schubkurbelschwingung für \lambda = 0.99","FontSize",12)
axis([0 10 0 0.51])
bild = getframe(gcf);
imwrite(bild.cdata, "bild44.png");

% andere Werte für T und N
la = 0.99;

fn = plotSpectrum(@(t) f(t, la) , 100, 1024, "b-")
title("Spektrum der Schubkurbelschwingung, f_N = 5.1","FontSize",12)
axis([0 5.2 0 0.51])
bild = getframe(gcf);
imwrite(bild.cdata, "bild45.png");

fn = plotSpectrum(@(t) f(t, la) , 10, 256, "b-")
title("Spektrum der Schubkurbelschwingung, T = 10, N = 256","FontSize",12)
axis([0 10 0 0.51])
bild = getframe(gcf);
imwrite(bild.cdata, "bild46.png");

fn = plotSpectrum(@(t) f(t, la) , 1, 128, "b*")
title("Spektrum der Schubkurbelschwingung, T = 1, N = 64","FontSize",12)
axis([0 10 0 1])
bild = getframe(gcf);
imwrite(bild.cdata, "bild47.png");

%---------------------------------------------------------------------
function fS = plotSpectrum(f, T, N, plottype)
% plottet das Spektrum der Funktion f(t) 
% bei N Messwerten über eine Gesamtzeit T
% benutzt plottype als Linientyp beim Plot
% gibt die Nyquist-Frequenz zur Kontrolle zurück

Delta_t = T/(N-1);
fS = 1/(2*Delta_t);   % Nyquist-Frequenz
t = [0:N-1]*Delta_t;
x = f(t);

X = fft(x);  
F = abs(X(1:N/2))/N;
freq = [0:(N/2)-1]/T;

plot(freq, F, plottype);
xlabel("Frequenz","FontSize",12);
ylabel("F","FontSize",12);

