function [y] = INTERP3(x,t1,t2,dt)
%[y] = INTERP3(x,t1,t2,dt)
% INTERP3 intepoluje dáta medzi dvoma bodmi so zhodnými prvými deriváciami,
% jedná sa o hermitovskú interpoláciu polynómom tretieho stupňa
% Vstupy:   x - data, ktoré sa majú upraviť, zväčša to je rozšírený
% interval miesta, kde sa stretávajú dva rôzne filtry a chceme tú oblasť
% vyhladiť
%           t1 - ľavá hranica časového intervalu
%           t2 - pravá hranica časového intervalu
%           dt - časová diferencia, je nutná k výpočtu derivácie
% Výstupy:  y - interpolované dáta

N = length(x);

if nargin < 4
   dt =  (t2-t1)/(N-1);
end

x1 = x(1);
dx1 = (x(2)-x(1))/dt;           %prvá derivácia naľavo
x2 = x(end);
dx2 = (x(end) - x(end-1))/dt;   %prvá derivácia napravo

PRS = [x1 x2 dx1 dx2];          %vektor pravej strany
MAT = [1 t1 t1^2 t1^3;1 t2 t2^2 t2^3;0 1 2*t1 3*t1^2;0 1 2*t2 3*t2^2];  %matica sústavy
a = (MAT\PRS')';                %koeficienty interpolačného polynómu
apol = a(end:-1:1);             %MATLAB reprezentuje polynom v opačnom poradí

xx = t1:(t2-t1)/(N-1):t2;       
y = polyval(apol,xx);

end

