function [KRold,P]=Hafmen(P) %Realizuje Huffman-ov statisticki koder. % %Reci=Hafmen(P) % P je vektor verovatnoca poruka izvora. Zbir elemenata vektora P mora biti 1. % Vektor verovatnoca P treba da bude uredjen po nerastucem poretku. U suprotnom, % vektor P ce biti automatski preuredjen da zadovolji ovaj uslov. % Reci je niz celija koji sadrzi kodne reci. Svaka celija je niz znakova (string) % koji definise jednu kodnu rec. Redosled kodnih reci odgovara sortiranom % vektoru verovarnoca po nerastucem poretku. % %[Reci,Psort]=Hafmen(P) % Psort je sortirani vektor verovatnoca P po nerastucen poretku. % provera s=sum(P); if s<1-1e-6 | s>1+1e-6 disp('Greska: Zbir elemenata vektora P mora biti 1.') return end % sortiranje n=length(P); P=sort(P); P=P(n:-1:1); %DEMO Q{1}=P; %Q je niz celija u kome se pamte nizovi verovatnoca pri svim redukcijama. Q{i+1} je niz verotnoca i-te redukcije % PROCES REDUKCIJE POLAZNOG SKUPA VEROVATNOCA p=P; for redukcija=1:n-2 %Broj redukcija je n-2 %obradjuje se vektor verovatnoca prethodne redukcije i dobija vektor verovatnoca tekuce redukcije a=p(n-redukcija)+p(n-redukcija+1); %zbir poslednje dve verovatnoce %formira se novi sortirani vektor verivatnoca q sa elementom a na odgovarajucoj poziciji koja se pamti u redBr i=1; q=0; while i<=n-redukcija-1 if p(i)