Site saati: 20 May Pzr, 2012 15:47

  En Popüler Belgeler - En Çok Oy Alan Belgeler - Son Belgeler

Yazar: Seyhan Agaoglu Tarih: 11 Nis Çar, 2007 16:28 Gösterim 1635
Açıklama: Huffman, Veri Sıkıştırma
Kategori: Matlab Tip: Uygulama
Yazara ait belge sayısı: 11
Yazar tarafından gönderilen tüm belgeleri bul

Huffman Kod Kelimesi Üreteci
Matlab:
function [h,l,lo]=huffman(p);
% HUFFMAN  Huffman kod kelimesi ureteci
% [h,l]=huffman(p)
% p=[0.4 0.2 0.2 0.1 0.1] gibi olasilik dizisi
% h, bu olasiliklara karsi gelen kod kelimeleri
% l, kod uzunluklari
% lo, ortalama kod uzunlugu
 
if length(find(p<0))~=0,
  error('Bu bir olasilik vektoru degi, negatif degerler iceriyor')
end
if abs(sum(p)-1)>10e-10,
  error('Bu bir olasilik vektoru degil, toplam olasılık 1 degil')
end
n=length(p);
q=p;
m=zeros(n-1,n);
for i=1:n-1
  [q,l]=sort(q);
  m(i,:)=[l(1:n-i+1),zeros(1,i-1)];
  q=[q(1)+q(2),q(3:n),1];
end
for i=1:n-1
  c(i,:)=blanks(n*n);
end
c(n-1,n)='0';
c(n-1,2*n)='1';
for i=2:n-1
  c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))...
  -(n-2):n*(find(m(n-i+1,:)==1)));
  c(n-i,n)='0';
  c(n-i,n+1:2*n-1)=c(n-i,1:n-1);
  c(n-i,2*n)='1';
  for j=1:i-1
    c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,...
    n*(find(m(n-i+1,:)==j+1)-1)+1:n*find(m(n-i+1,:)==j+1));
  end
end
for i=1:n
  h(i,1:n)=c(1,n*(find(m(1,:)==i)-1)+1:find(m(1,:)==i)*n);
  l(i)=length(find(abs(h(i,:))~=32));
end
lo=sum(p.*l);
% end of function
Belge Gezinti Çubuğu 

Bu kategoriye yeni belge gönderemezsiniz
Bu kategorideki belgelerinizi düzenleyemezsiniz
Bu kategorideki belgelerinizi silemezsiniz
Bu belgeye yorum yapamazsınız
Bu kategorideki belgeleri oylayamazsınız
Bu kategorideki belgelerin onaylanması gerekmektedir
Bu kategorideki düzenlenmiş belgelerin onaylanması gerekmektedir