function [spektrum,fVz] = spektrumVypocet(zrychleni,casNovy,logCentr,volbaOkna)
% spektrumVypocet - funkce pro výpočet spekter
%       zrychleni - výsledný vektor zrychlení vypočítaný z os X,Y,Z, nebo matice
%                   signálů zrychlení v osách, kde řádky matice odpovídají jednotlivým osám
%         casNovy - časová posloupnost s pevnou periodou
%        logCentr - 0/1; použití fftshift pro symetrické spektrum okolo nuly
%       volbaOkna - výběr váhovacího okna pro získání spektra
%        spektrum - výstupy; spektra 
%             fVz - vzorkovací frekvence

delka = length(zrychleni);
n = 2^nextpow2(delka);                 % doplnění signálů nulami pro rychlejší FFT
casDif = casNovy(2) - casNovy(1);
fVz = delka/(casNovy(end)+casDif);     % vzorkovací frekvence

%% Centrování spektra:
if logCentr == 0
    frekvence = (0:n-1)*(fVz/n);        % výpočet bodů osy X spektra
elseif logCentr == 1
    frekvence = linspace(-n/2,n/2,n)*(fVz/n);   % výpočet bodů osy X spektra
end

%% Výběr okna:
switch volbaOkna
    case 'obdelnik'
        okno = rectwin(delka)';
    case 'trojuhelnik'
        okno = triang(delka)';
    case 'hamming'
        okno = hamming(delka)';
    case 'hann'
        okno = hann(delka)';
    case 'chebyshev'
        okno = chebwin(delka)';
end

%% Výpočet spektra/spekter (podle dimenze 'zrychlení'):
if size(zrychleni,1) == 1
    spektrumA = fft(zrychleni.*okno,n);
    if logCentr == 1
        spektrumA = fftshift(spektrumA);
    end
    % Vykreslení spektra:
    figure
    plot(frekvence,abs(spektrumA/n))
    title('Amplitudové spektrum výsledného zrychlení')
    xlabel('Frekvence [Hz]')
    ylabel('Amplituda [m.s^{-2}/2]')
    spektrum = spektrumA;
    
elseif size(zrychleni,1) == 3
    spektrumX = fft(zrychleni(1,:).*okno,n);         % výpočet spektra v ose X
    spektrumY = fft(zrychleni(2,:).*okno,n);         % výpočet spektra v ose Y
    spektrumZ = fft(zrychleni(3,:).*okno,n);         % výpočet spektra v ose Z
    if logCentr == 1
        spektrumX = fftshift(spektrumX);
        spektrumY = fftshift(spektrumY);
        spektrumZ = fftshift(spektrumZ);
    end
    % Vykreslení spekter:
    figure
    sgtitle('Spektra signálů z jednotlivých os')
    mezYPlus = max([max(abs(spektrumX/n)),max(abs(spektrumY/n)),max(abs(spektrumZ/n))]);
    mezYMinus = min([min(abs(spektrumX/n)),min(abs(spektrumY/n)),min(abs(spektrumZ/n))]);
    mezY = ceil(max([mezYPlus,abs(mezYMinus)]));
    
    subplot 311
    plot(frekvence,abs(spektrumX/n))
    title('Amplitudové spektrum pro osu X')
    xlabel('Frekvence [Hz]')
    ylabel('Amplituda [m.s^{-2}/2]')
    ylim([-0.05*mezY,1.05*mezY])

    subplot 312
    plot(frekvence,abs(spektrumY/n))
    title('Amplitudové spektrum pro osu Y')
    xlabel('Frekvence [Hz]')
    ylabel('Amplituda [m.s^{-2}/2]')
    ylim([-0.05*mezY,1.05*mezY])
    
    subplot 313
    plot(frekvence,abs(spektrumZ/n))
    title('Amplitudové spektrum pro osu Z')
    xlabel('Frekvence [Hz]')
    ylabel('Amplituda [m.s^{-2}/2]')
    ylim([-0.05*mezY,1.05*mezY])
    spektrum = [spektrumX;spektrumY;spektrumZ];
    
end
end