function out = wpakrec(c,wname)
% WPAKREC - 2D rekonstrukce Wavelet Packet
%   WPAKREC ziska rekonstrukci 2D signalu z koeficientu C pro vlnku WNAME.
%   Uroven rozkladu je obsazen v promenne C. Funkce vyuziva vlnky 
%   implementovane v programu MATLAB. 
%   Seznam dostupny pomoci HELP WAVEINFO 
%   Rekonstrukce se provadi pomoci IDWT2
% 
%   WPAKREC urci rekonstrukci koeficientu ziskanych pomoci WPAKDEC.
% 
%   Obecny tvar funkce:
%   OUT = WPAKREC(C,WNAME)
% 
%   Pro rekonstrukci pomoci WPAKREC je potrebne nastavit DWTMODE: 'per'

%% Definice vstupnich promennych
leng = length(c);
k = 0;
len = length(c{end});
%% Definice nejvyssi urovne rekonstrukce
c{1}{1} = [];
%% Rekonstrukce posledni urovne do nasledujici urovne
for i = 1:4:len-3
        k = k+1;
        if isempty(c{leng}{i}) == 0
            dd{leng}{k} = idwt2(c{leng}{i}, c{leng}{i+1},c{leng}{i+2}, c{leng}{i+3},wname);
        else dd{leng}{k} = c{leng-1}{k};
        end
       
end
%% Rekonstrukce ostatnich urovni smerem od nizsi urovne k nejvyssi
for l = 1:1:leng-2
    len = length(c{leng-(l)});
    k = 1;
    for i = 1:4:len-3
        if isempty(c{leng-(l+1)}{k}) == 1 ||  nnz(c{leng-(l+1)}{k}) ==0
            dd{leng-(l)}{k} = idwt2(dd{leng-(l-1)}{i}, dd{leng-(l-1)}{i+1},dd{leng-(l-1)}{i+2}, dd{leng-(l-1)}{i+3},wname);
            k = k+1;
         else dd{leng-(l)}{k} = c{leng-(l+1)}{k};
            k = k+1;
        end
    end
end
%% Definice vystupu
out = dd{2}{1};