function [ e ] = adaptivni( x, fvz, frekvence, amplituda )
% Funkce adaptivni.m filtruje signál x adaptivním filtrem. Je vhodná 
% zejména pro potlačení brumu v užitečném signálu. Vstupy funkce jsou:
% x: vektor popisující signál, který má být filtrován adaptivním filtrem
% fvz: kladné číslo charakterizující frekvenci, s kterou je signál x
% vzorkován
% frekvence: nezáporné číslo charakterizující frekvenci pomocného signálu
% amplituda: nezáporné číslo charakterizující amplitudu pomocného signálu
% Výstupem funkce adaptivni.m je vektor e popisující získaný odhad signálu.

%vytvoření pomocného signálu
delka=1:length(x);
pom=amplituda*sin(2*pi*frekvence*delka/fvz);

%nastavení počátečního vektoru vah
M=10;           %délka impulsní charakteristiky
mi=3*10^-8;     %rychlost adaptace
w=zeros(1,M);
e=[];         %vektor pro odhad signálu
y=[];         %vektor pro odhad šumu
xk=[];

%filtrace signálu
for k=M:length(x)
    xk=fliplr(pom(k-M+1:k));
    y(k)=sum(w.*xk);         %odhad brumu
    e(k)=x(k)-y(k);          %odhad signálu
    w=w+2*mi*e(k)*xk ;       %úprava vektoru vah
end

