function [ out, index, tau1 ] = NonDwt( x, wave, level, prechod )
%
% [ out, index, tau1 ] = NonDwt( x, wave, level, prechod )
% 
% Funkce provede vlnkovou transformaci bez decimace.
% Vrati vektor vlnkovych koeficientu (out) a vektor, ktery obsahuje 
% delky signalu v jednotlivch pasmech (index). Delky se meni, protoze se postupne
% prodluzuje impulsni char. filtru.
% VSTUP: x - signal 1D;
%        wave, level - typ vlnek a pocet urovni rozkladu;
%
% VYSTUP:  out =   [ vystup DP | posledni uroven | ... | 2.uroven | 1.uroven ]
%          index = [  delka    |     delka       | ... |   delka  |  delka   ]
%          tau1 - zpozdeni (stejne pro vsechna pasma - urci se z nenizsiho)
%	pozn.:	out .. delka vstup+imp.char.-1
%				delka .. delky dle imp. charakteristik
% SPUSTENI:   [ out, index, tau1 ] = NonDwt( x, 'db5', 5, 1 );
%
% SEE: NonIDWT,CancelDelay
%

x = x(:)';

[ LoD, HiD, LoR, HiR ] = wfilters( wave );

%LoD=LoD/sqrt(2);%pridal
%HiD=HiD/sqrt(2);%pridal
%LoR=LoR/sqrt(2);%pridal
%HiR=HiR/sqrt(2);%pridal

size(x);
% Doplneni nul na zacatek a konec pro zamezeni prechodovych deju
if (nargin==4)&(prechod==1),
   i=0:(level-1);
   Nnul = round (( sum( length( LoR ) + (length( LoR )-1)*(2.^i-1) )-(level-1) -1 )/2 );
   x = [zeros(1,Nnul) x zeros(1,Nnul)];
end
   
NLo = length( LoD );
NHi = length( HiD );

GH = HiD;
H = 1;
out = [];
index = [];
lenH = NLo;
lenG = 2*NHi-1;

barvy = ['r','g','b','y','c','k','m'];

i=0:(level-1);
CelkoveZpozdeni = round (( sum( NLo + (NLo-1)*(2.^i-1) )-(level-1) -1 )/2 );
i=0;

for i = 1:level,
   
   GH = GH/(sqrt(2)); %vynechal
   
%   Vykreslovani frekv. char. filtru
%   figure(1);
%   [HH,WW] = freqz( GH,1,1024,'whole' );
%	subplot(211);grid on
%   plot( linspace(-1,1,length(HH)), abs( fftshift(HH) ),barvy(i) ); hold on
%	pause
   
   % Filtrace signalu
   pom = conv( GH, x );
%   pom = pom( 1:(end-length(GH)-1) );
   % vysledek se zpozdi
   pom = [zeros(1,CelkoveZpozdeni-round((length(GH)-1)/2) ) pom];   % zpozdeni

   out = [pom out];  % posledni je nejjemnejsi
   index = [length(pom) index];
   
 %  figure(2);	subplot(level+1,1,i);	stem( pom );
   
   if i==level, break, end,
   
   % Pocitani dalsich filtru
   Hpom = zeros( 1, lenH );
   Hpom(1:(2^(i-1)):end) = LoD;
   H = conv( H, Hpom );          % dolni propust
   
   G = zeros( 1, lenG );
   % horni propust
   G(1:(2^i):end) = HiD;
   GH = conv( G, H );		% vysledny filtr pro jednotlive urovne
   
   lenH = (2^(i)-1)*(NLo-1) + NLo;
   lenG = (2^(i+1)-1)*(NHi-1) +  NHi;

end,

Hpom = zeros( 1, (2^(i-1)-1)*(NLo-1) + NLo );
Hpom(1:(2^(i-1)):end) = LoD;
GH = conv( H, Hpom );            % filtr pro nejnissi pasmo
 GH = GH/(sqrt(2)); %vynechal
% filtrace pro nejnissi pasmo
pom = conv( GH, x );
%pom = pom( 1:(end-length(GH)-1) );
% zpozdeni
pom = [zeros(1,CelkoveZpozdeni-round((length(GH)-1)/2) ) pom];   % zpozdeni

out = [pom out];
index = [length(pom) index];

if nargout==3
   tau1 = CelkoveZpozdeni;
end

%figure(1);
%[HH,WW] = freqz( GH,1,1024, 'whole' );
%subplot(212); grid on
%plot( linspace(-1,1,length(HH)), abs( fftshift(HH)),'r' ); hold on
%grid on
%pause

%figure(2);
%subplot(level+1,1,i+1);
%stem( pom );

