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

📄 huffman_4ary.m

📁 二进制
💻 M
字号:
%Homework 1
%By Chen Chen (PID:001084988)
%Function:Create a 4-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];
       
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:4)); 
    pointer= pointer+1;
    addrss(pointer-28,1:4)=index(1:4)';
    Prob=[];                            
    newindex=[];
    if length(sorted_prob)>4
        for i=5: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'];
code={};
    code{sequence(l)}='0';
    code{sequence(l-1)}='1';
    code{sequence(l-2)}='2';
    code{sequence(l-3)}='3';
    
for i=p-1:-1:1
    code{sequence(i*4)}=cat(2,code{i+n},'0');
    code{sequence(i*4-1)}=cat(2,code{i+n},'1');
    code{sequence(i*4-2)}=cat(2,code{i+n},'2');
    code{sequence(i*4-3)}=cat(2,code{i+n},'3');
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -