% Skript zur Musterlösung
%
% Numerische Mathematik, SS 2013
%
% Toeplitz-Systeme in der Signalverarbeitung
%
% Ingolf Busch, Juni 2013

%Signal generieren
s = (1:10000)'/10000+0.05*randn(10000,1);

%Länge der Linearkombination
p = 3;

%Berechnen der Koeffiezienten c_1,...,c_p
c = zeros(p,1);

for i=1:p
    c(i) = dot(s(1:(end-i)),s((i+1):end));
end

% Normierung c_0 = 1

c_0 = dot(s,s);
c = c/c_0;  

% Lösen des Gleichungssystems mit Durbin
% Achtung Durbin löst Ca=-c und wir benötigen Ca=c
a = -my_durbin(c);

% Berechnen der Vorhersage
s_lin = 0;

for i=1:p
    s_lin = s_lin + a(i)*s((p+1-i):(end-i+1));
end

%Plotten des Vergleichs
I=1:1000;
plot(I,s(I),I,s_lin(I));

%Laufzeittests

p=2:100:5000;
time=zeros(5,1);
t_durbin=zeros(size(p));

for k=1:length(p)
    c = zeros(p(k),1);

for i=1:p(k)
    c(i) = dot(s(1:(end-i)),s((i+1):end));
end
c_0 = dot(s,s);
c = c/c_0;

for i=1:5
    tic;
    a = -my_durbin(c);
    time(i)=toc;
end
t_durbin(k)=mean(time);
end

figure;
plot(p,t_durbin);