function [ h ] = getlowpassresponse(N, fc , window)
%[h] = GETLOWPASSRESPONSE(N, fc , window)
%GETLOWPASSRESPONSE vytvorí impulznú odozvu konečnej dĺžky LOWPASS filtru
%daného parametrami
% Vstupy:   N - dĺžka impulznej odozvy
%           fc - ideálna prechodová normalizovaná frekvencia
%           window - 'char' typ okna
%               'R' obdĺžnikové
%               'H' Hammingovo
%               'B' Blackmanovo
% Výstup:   h - impulzná odozva
%[1] PROAKIS, J. G. a MANOLAKIS D. Digital signal processing: principles, algorithms and applications. 3rd ed. Prentice-Hall, Inc. 1996. ISBN 0-13-394338-9.

N = N(:); N = N(1);
assert(checkN(N)==1,'N musí byť prirodzené číslo, jedná sa o dĺžku impulznej odozvy');
assert(isnumeric(fc)==1 && fc>0,'Prechodová frekvencia musí byť kladné reálne číslo');

if mod(N,2)==0 %požadujem nepárny počet bodov, aby bolo možné vykonať spektrálnu inverziu
    N=N+1;
end

%% TVORBA IMPULZNEJ ODOZVY

n = 0:1:N-1;
p = n-(N-1)/2;
h = sin(2*pi*fc*p)./(pi*p);
h(floor(N/2)+1) = 2*fc;

%% POUZITIE OKNA [1]

switch window
    case 'R'
        h = h;
    case 'H'
        s = 2*pi*(n/(N-1));
        ham = 0.54 - 0.46*cos(s);
        h = h.*ham;
    case 'B'
        s = 2*pi*(n/(N-1));
        blc = 0.42 - 0.5*cos(s) + 0.08*cos(2*s);
        h = h.*blc;
    otherwise
        assert(1==0,'Neplatná voľba okna!');    
end

h = h/sum(h); %normalizácia, aby bol amplitúdový prenos v nule rovný jednej

end

