function [ y, h ] = movcasc( N, x, order, symmetry )
%[y,h] = MOVCASC( N, x, order, exactendmatch )
%MOVCASC zo zvolených parametrov vytvorí "priemerovací" (moving
%average) filter, s možnosťami tvorby kaskád tohto filtru a vykoná
%filtráciu na dátach
% Vstupy:   N - počet prvkov základnej impulznej odozvy (moving average)
%           x - vstupný signál filtru, môže byť viac vo forme matice, kde
%           jednotlivé signály odpovedajú riadkom
%           order - počet kaskád, napr. 1 pre obdĺžníkové okno, 2 pre
%           trojuholníkové okno...
%           symmetry - pokiaš chceme použiť symetrické predĺženie signálu
%           na krajoch, treba použiť číslo 1
% Výstup:   y - výstupný signál filtru
%           h - impulzná odozva

if nargin < 4
    symmetry = 0;
end
if nargin < 3
    order = 1;
end

N = N(:); N = N(1);
assert(checkN(N)==1,'N musí byť prirodzené číslo, jedná sa o dĺžku impulznej odozvy')

%% TVORBA IMPULZNEJ ODOZVY

h = 1/N*ones(1,N);
hn = h;
for i = 2:order
   h = convolution(h,hn); 
end

%% FILTRACIA

[a,b] = size(x);
y = zeros(a,b);
for i = 1:a
    y(i,:) = FIRfilt(x(i,:),h,symmetry);
end

end

