📄 huffman_8ary.m
字号:
%Homework 1
%By Chen Chen (PID:001084988)
%Function:Create a 8-ary Huffman coding
clc;
clear all;
probability=[0.0761;0.0154;0.0311;0.0395;0.1262;0.0234;0.0195;0.0551;0.0734;
0.0015;0.0065;0.0411;0.0254;0.0711;0.0765;0.0203;0.0010;0.0615;
0.0650;0.0933;0.0272;0.0099;0.0189;0.0019;0.0172;0.0009;0.1200;0.0300;0.0000];% add a fake prob
new_probability=probability/sum(probability);
Prob=new_probability;
pointer=length(new_probability);
addrss=[];
[sorted_prob,index]=sort(Prob);
number=length(new_probability);
while number ~=1
add=sum(sorted_prob(1:8));
pointer= pointer+1;
addrss(pointer-29,1:8)=index(1:8)';
Prob=[];
newindex=[];
if length(sorted_prob)>8
for i=9:length(sorted_prob);
Prob=[Prob;sorted_prob(i)];
newindex=[newindex;index(i)];
end;
end;
Prob=[Prob;add];
newindex=[newindex;pointer];
sorted_prob=[];
[sorted_prob,index_final]=sort(Prob);
index=newindex(index_final);
number=length(Prob);
end;
n=length(new_probability);
[p,q]=size(addrss);
L=p*q;
sequence_1 = reshape(addrss',1,L);
sequence = sequence_1';
code_symbols=['0','1','2','3','4','5','6','7'];
code={};
code{sequence(L)}='0';
code{sequence(L-1)}='1';
code{sequence(L-2)}='2';
code{sequence(L-3)}='3';
code{sequence(L-4)}='4';
code{sequence(L-5)}='5';
code{sequence(L-6)}='6';
code{sequence(L-7)}='7';
for i=p-1:-1:1
code{sequence(i*8)}=cat(2,code{i+n},'0');
code{sequence(i*8-1)}=cat(2,code{i+n},'1');
code{sequence(i*8-2)}=cat(2,code{i+n},'2');
code{sequence(i*8-3)}=cat(2,code{i+n},'3');
code{sequence(i*8-4)}=cat(2,code{i+n},'4');
code{sequence(i*8-5)}=cat(2,code{i+n},'5');
code{sequence(i*8-6)}=cat(2,code{i+n},'6');
code{sequence(i*8-7)}=cat(2,code{i+n},'7');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -