
function yf = filtracija(Nred, Rh, fs, fdh, f_minh, f_maxh, Rl, fgl, f_minl, f_maxl, f_mina, f_maxa, f_minb, f_maxb)
% ulazni parametri: - ucitavaju se funkcijom poc_ucjet_dog1

if (nargin ~= 14)
    sprintf('error: ima 14 ulaznih parametara')
    disp('open m file: poc_uvjet_dog1');
end

wnh = fdh/(fs/2);    % granicna frek. podrucja gusenja 

% projektiranje VP filtra, cheby2 -> glatko u pod. propustanja, valovitost
% u pod. gusenja
[bh, ah] = cheby2(Nred, Rh, wnh, 'high');

% odredivanje amplitudno-frek. karakteristike filtra u [f_min, f_max]
% pomocu naredbe freqz
[hh, omh] = freqz(bh, ah, linspace(f_minh, f_maxh, 1024)/fs*2*pi);
varh = omh/pi * fs/2;

wnl = fgl/(fs/2);    % granicna frek. podrucja gusenja 

% projektiranje NP filtra, cheby2 -> glatko u pod. propustanja, valovitost
% u pod. gusenja
[bl, al] = cheby2(Nred, Rl, wnl, 'low');

% odredivanje amplitudno-frek. karakteristike filtra u [f_min, f_max]
% pomocu naredbe freqz
[hl, oml] = freqz(bl, al, linspace(f_minl, f_maxl, 1024)/fs*2*pi);
varl = oml/pi * fs/2;


% ----------------------- KASKADA ------------------------------------

% kaskadiranje NP i VP filtra:
% spajanjem filtara u kaskadu dobiva se zeljeni PP filtar
b = conv(bh, bl);   % koeficijenti brojnika kaskade
a = conv(ah, al);   % koeficijenti nazivnika kaskade

% frekvencijska karakteristika kaskade
[h, om] = freqz(b, a, 1024);

var = om/pi * fs/2.20;

% prikaz VP dijela kaskade filtra
[h, om] = freqz(b, a, linspace(f_mina, f_maxa, 1024)/fs*2*pi);
var = om/pi * fs/2;

% prikaz NP dijela kaskade filtra
[h, om] = freqz(b, a, linspace(f_minb, f_maxb, 1024)/fs*2*pi);
var = om/pi * fs/2;


% ----------------------- UCITAVANJE ---------------------------------

[y, fs, bits] = wavread('dan');

% filtriranje ucitanog signala primjenom PP filtra
yf = filter(b, a, y);