常见的信源编码介绍及基于Matlab的实现。P22214046刘常鹏、P22214047杨沁硕

1.概要

       信源编码是一种信息编码技术,旨在提高通信系统的有效性,通过压缩信息的冗余度来实现。在编码理论指导下,先后出现了许多性能优良的编码方法,根据信源的性质进行分类,则有信源统计特性已知或未知、无失真或限定失真、无记忆或有记忆信源的编码;按编码方法进行分类,可分为分组码或非分组码、等长码或变长码等。然而最常见的是讨论统计特性已知条件下,离散、平稳、无失真信源的编码,消除这类信源剩余度的主要方法有统计匹配编码和解除相关性编码。例如,香农码、哈夫曼码属于不等长度分组码,算术编码属于非分组码,预测编码和变换编码是以解除相关性为主的编码。在此简要介绍常见信源编码中香浓编码与哈夫曼编码,以及利用MATLAB二者的方法。

2.香浓编码

      香农编码是一种基于概率的编码方法,由克劳德·香农在1948年首次提出。其核心思想是利用符号出现概率的不均匀性来最小化平均编码长度。具有以下特点:
 
- 属于不等长编码,通常将经常出现的消息变成短码,不经常出现的消息编成长码。
- 编码所得的码字没有相同的,所以是非奇异码,也没有一个码字是其他码字的前缀,所以是即时码,也是唯一可译码。

具体步骤如下:
 
1. 将信源符号按概率从大到小顺序排列。
2. 计算第 i 个符号对应的码字的码长(向上取整),码长计算公式为:
3. 计算第 i 个符号的累加概率。
4. 将累加概率变换成二进制小数,取小数点后相应位数作为第 i 个符号的码字。

下面是用matlab实现香浓编码

clear all  
clc   
% 输入离散信源的概率分布  
p = input('请输入离散信源概率分布,例如[0.5,0.5]:\n');  
% 获取概率分布的长度  
N = length(p);  
% 计算每个符号的理论最短码长(向上取整)  
L = ceil(-log2(p));  
% 对概率进行降序排序,并记录原始索引  
[p_SortDescend,reflect] = sort(p,'descend');  
% 初始化累积概率数组和码字数组  
P = zeros(1,N);      
CODE = strings(1,N);  
for i=1:N            
    % 初始化当前符号的码字(长度为该符号的理论最短码长)  
    code = zeros(1,L(reflect(i)));  
      
    % 对于第一个符号,累积概率为0,码字为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值