%**********************************************************
%**               Diskretni transformace                 **
%**            Generování Walsh-Paleyove                 **
%** Leos Marsalek (c) 2002-2003 Leos.Marsalek@tiscali.cz **
%**********************************************************

function [baze]=walsh(n);     % n udává velikost bázove matice
%--------------------- Generovani Rademacherovy báze ----------------------
plus=0;
N=2^n;
vysledek=-1.*ones(n+1,N);
vaha=zeros(n+1,N);
vysledek(1,:)=1;
for r=1:n
    deleni=2^r;
    
for s=1:deleni:2^n
        
for q=1:round(deleni/2)
            vysledek(n-r+2,s+q-1)=1;  
            vaha(n-r+1,s+q-1)=1;
        
end
    end
end
%---------------------- Konec generovani Rademacherovy baze ---------------
rad=vysledek;
%---------------------- Vygenerovani Walshovy baze
baze=ones(N,N);
for k=1:N
   
for q=1:n+1     
     baze(k,:)=baze(k,:).*rad(q,:).^vaha(n-q+2,N-k+1);
   
end
end