function [aIpl,xIpl,yIpl,zIpl,casNovy] = interpolace(aRaw,xRaw,yRaw,zRaw,cas,metoda,logGraf)
%      interpolace - funkce pro interpolaci neekvidistantních vzorků na nové
%                    stejnoměrné vzdálenosti pro možnost analýzy
%             aRaw - výsledné zrychlení s neekvidistantím vzorkováním
% xRaw, yRaw, zRaw - signály zrychlení v jednotlivých osách s
%                    neekvidistantím vzorkováním
%              cas - vektor časových značek
%           metoda - funkce, resp. metoda, kterou se získají nové body
%          logGraf - 0/1 podle toho, zda je požadováno vykreslit graf
%                    pro porovnání interpolačních metod
%             aIpl - výsledné zrychlení s ekvidistantím vzorkováním
% xIpl, yIpl, zIpl - signály zrychlení v jednotlivých osách s
%                    ekvidistantím vzorkováním (převzorkované)
%          casNovy - přepočtené časové značky se stejnoměrnou vzdáleností


%% Přejmenování:
a = aRaw;
x = xRaw;
y = yRaw;
z = zRaw;
casNovy = linspace(cas(1),cas(end),length(cas));

%% Provedení interpolace:
% Lineární:
aLin = interp1(cas,a,casNovy);
xLin = interp1(cas,x,casNovy);
yLin = interp1(cas,y,casNovy);
zLin = interp1(cas,z,casNovy);

% Cubic:
aCub = interp1(cas,a,casNovy,'pchip');
xCub = interp1(cas,x,casNovy,'pchip');
yCub = interp1(cas,y,casNovy,'pchip');
zCub = interp1(cas,z,casNovy,'pchip');

% Spline:
aSpl = interp1(cas,a,casNovy,'spline');
xSpl = interp1(cas,x,casNovy,'spline');
ySpl = interp1(cas,y,casNovy,'spline');
zSpl = interp1(cas,z,casNovy,'spline');

% Akima:
aAkm = interp1(cas,a,casNovy,'makima');
xAkm = interp1(cas,x,casNovy,'makima');
yAkm = interp1(cas,y,casNovy,'makima');
zAkm = interp1(cas,z,casNovy,'makima');

%% Výběr metody:
switch metoda
    case 'linear'
        aIpl = aLin;
        xIpl = xLin;
        yIpl = yLin;
        zIpl = zLin;
    case 'cubic'
        aIpl = aCub;
        xIpl = xCub;
        yIpl = yCub;
        zIpl = zCub;
    case 'spline'
        aIpl = aSpl;
        xIpl = xSpl;
        yIpl = ySpl;
        zIpl = zSpl;
    case 'makima'
        aIpl = aAkm;
        xIpl = xAkm;
        yIpl = yAkm;
        zIpl = zAkm;
end

%% Grafy pro porovnání interpolace:
if logGraf == 1
    % Porovnání původního a interpolovaného signálu:
    figure
    sgtitle('Porovnání signálu bez interpolace a po interpolaci')
    
    subplot 211
    plot(cas,x)
    title('Signál z osy X bez interpolace')
    xlabel('Čas [s]')
    ylabel('Zrychlení [m.s^{-2}]')
    
    subplot 212
    plot(casNovy,xIpl)
    title('Signál z osy X po interpolaci')
    xlabel('Čas [s]')
    ylabel('Zrychlení [m.s^{-2}]')
    
    % Porovnání různých metod interpolace (v ose X):
    % Diference:
    xDifLin = abs(x - xLin);
    xDifCub = abs(x - xCub);
    xDifSpl = abs(x - xSpl);
    xDifAkm = abs(x - xAkm);

    % Vykreslení absolutní hodnoty rozdílů hodnot původních a interpolovaných vzorků u jednotlivých metod:
    figure
    mezY = max([max(xDifLin),max(xDifCub),max(xDifSpl),max(xDifAkm)]) + 0.1;
    mezX = length(x) + 20;
    sgtitle('Porovnání metod interpolace')
    
    subplot 411
    plot(1:length(x),xDifLin,'Color','#A2142F')
    title('Linear')
    xlim([0,mezX])
    ylim([-mezY,mezY])
    xlabel('Číslo vzorku')
    ylabel('abs(x_{i} - x´_{i})')

    subplot 412
    plot(1:length(x),xDifCub,'Color','#EDB120')
    title('Cubic')
    xlim([0,mezX])
    ylim([-mezY,mezY])
    xlabel('Číslo vzorku')
    ylabel('abs(x_{i} - x´_{i})')

    subplot 413
    plot(1:length(x),xDifSpl,'Color','#4DBEEE')
    title('Spline')
    xlim([0,mezX])
    ylim([-mezY,mezY])
    xlabel('Číslo vzorku')
    ylabel('abs(x_{i} - x´_{i})')
    
    subplot 414
    plot(1:length(x),xDifAkm,'Color','#77AC30')
    title('Akima')
    xlim([0,mezX])
    ylim([-mezY,mezY])
    xlabel('Číslo vzorku')
    ylabel('abs(x_{i} - x´_{i})')
end
end