⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huffman_8ary.m

📁 二进制
💻 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 + -