%**********************************************************
%** Výpocet Walshovy modifikované base **
%** Diskrétní transformace **
%** Leos Marsalek Leos.Marsalek@tiscali.cz **
%** Jan Skapa Jeniczek.s@seznam.cz **
%** (c) 2003 upraven algoritmus Davida Horáka **
%**********************************************************
function [Wm]=walshm(n)
%--------------------- 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
W=baze;
for i=1:size(W,2)-1
S(:,i)=W(:,i)+W(:,i+1);
end
for i=1:N
Z(i)=N-nnz(S(i,:));
end
for i=1:N
Wm(i,:)=W(Z==i,:);
end