資源簡介
用matlab實現huffman編碼。輸入為一維行矩陣p,p為各符號的概率分布,概率和為1,各元素值為
正,輸出H矩陣為對應每個符號概率的碼字,L為輸出碼字的平均碼長。Huffman .m運用典
型的IF和FOR控制流循環語句,該程序包括兩個IF 控制流和5個FOR 循環結構。
代碼片段和文件信息
function?[hl]=huffman(p)?
if?(length(find(p<0))~=0)?
???error(‘Not?a?probnegative?component‘);?
end?
if?(abs(sum(p)-1)>10e-10)?
???error(‘Not?a?prob.vectorcomponent?do?not?add?to?1‘)?
end?
n=length(p);?
q=p;?
m=zeros(n-1n);?
for?i=1:n-1?
???[ql]=sort(q);?
???m(i:)=[l(1:n-i+1)zeros(1i-1)];?
???q=[q(1)+q(2)q(3:n)1];?
end?
for?i=1:n-1?
???c(i:)=blanks(n*n);?
end?
c(n-1n)=‘0‘;?
c(n-12*n)=‘1‘;?
for?i=2:n-1?
???c(n-i1:n-1)=c(n
評論
共有 條評論