香农编码
好的,我们来详细解释一下香农编码(Shannon Coding)。
香农编码是由信息论的奠基人克劳德·香农在其开创性论文《通信的数学原理》(1948年)中提出的一种信源编码方法。它是一种最早的、基于符号出现概率进行编码以获得高效数据压缩的方法,其核心思想是:为概率更大的符号分配更短的码字,为概率更小的符号分配更长的码字,从而降低平均码长。
香农编码的核心原理与步骤
-
符号概率:
- 给定一个离散无记忆信源(DMS),它包含一系列符号
{s1, s2, ..., sn}。 - 每个符号
si有一个已知的、独立的发生概率p(si),并且所有概率之和为 1:∑ p(si) = 1。
- 给定一个离散无记忆信源(DMS),它包含一系列符号
-
概率排序:
- 将符号按照其发生的概率进行降序排列(概率大的在前,概率小的在后)。这是关键一步。
- 排序后的符号序列记为
{s1, s2, ..., sn},满足p(s1) ≥ p(s2) ≥ ... ≥ p(sn)。
-
计算累加概率:
- 计算每个符号的累加概率(Cumulative Probability)
F(si)。 - 累加概率
F(si)定义为所有排在si前面的符号的概率之和(不包括si本身的概率):F(s1) = 0(因为前面没有符号)F(s2) = p(s1)F(s3) = p(s1) + p(s2)- ...
F(si) = p(s1) + p(s2) + ... + p(si-1)F(sn) = p(s1) + p(s2) + ... + p(sn-1)
- 计算每个符号的累加概率(Cumulative Probability)
-
确定码长:
- 计算每个符号
si所需的码字长度L(si)。香农规定,L(si)应满足以下不等式:⌈ -log₂(p(si)) ⌉ ≤ L(si) < ⌈ -log₂(p(si)) ⌉ + 1
- 更常用的、直接的确定方式是取:
L(si) = ⌈ -log₂(p(si)) ⌉
- 其中
⌈ x ⌉表示对x向上取整(即不小于x的最小整数)。-log₂(p(si))表示该符号所含的自信息量。码长L(si)不小于该符号的信息位数。
- 计算每个符号
-
将累加概率转换为二进制:
- 将步骤 3 中计算出的每个符号的累加概率
F(si)转换为二进制小数形式(即0.b1b2b3...)。 - 这个二进制表示可能需要无限位才能精确表示,但我们只取前
L(si)位(步骤 4 计算出的长度)。
- 将步骤 3 中计算出的每个符号的累加概率
-
截取码字:
- 取
F(si)的二进制表示的前L(si)位小数部分(去掉小数点前的0后),作为符号si的香农码字。
- 取
关键特点与讨论
- 前缀码: 香农编码产生的码字集是前缀码(Prefix Code),也称为即时可译码。这意味着没有一个码字是另一个码字的前缀。这是非常重要的特性,确保了接收端在接收比特流时可以唯一地、即时地解码,无需等待后续比特来判断当前码字的结束。
- 非最优性: 虽然香农编码遵循了“大概率短码、小概率长码”的原则,但它不是最优的前缀码(即平均码长并非最小)。香农-范诺编码(Shannon-Fano Coding)和霍夫曼编码(Huffman Coding)是两种更优的前缀编码方法。霍夫曼编码是已知的、对于给定符号概率分布能达到最小平均码长的最佳前缀码。
- 平均码长: 香农编码的平均码长
L_avg满足香农第一定理(无失真信源编码定理):H(S) ≤ L_avg < H(S) + 1- 其中
H(S) = - ∑ p(si) log₂(p(si))是信源的熵(平均信息量)。这意味着平均每个符号的码长至少需要熵值那么多比特,但香农编码可以保证平均码长不超过熵值加 1 比特。
- 应用: 由于其非最优性和相对复杂的计算(需要计算累加概率并转换为二进制),香农编码在实际的直接应用(如主流压缩软件)中很少单独使用。然而,它在信息论发展史上的地位极其重要,因为它首次在理论上证明了高效信源编码的可能性,并给出了具体的构造方法。其思想(累加概率映射)也被用于算术编码等更高效、更现代的编码方法中。
- 与香农-范诺编码的区别: 注意不要混淆“香农编码”和“香农-范诺编码”(Shannon-Fano Coding)。后者是香农和罗伯特·范诺(Robert Fano)各自独立提出的一种不同的编码方法(虽然思想类似),它在构造方式(递归划分)和性能上略有不同。香农编码特指上述基于累加概率的方法。
简单示例
假设信源有符号 A, B, C, D,概率分别为 p(A)=0.5, p(B)=0.3, p(C)=0.15, p(D)=0.05。
- 排序 (降序):
A (0.5), B (0.3), C (0.15), D (0.05) - 计算累加概率:
F(A) = 0F(B) = p(A) = 0.5F(C) = p(A) + p(B) = 0.5 + 0.3 = 0.8F(D) = p(A) + p(B) + p(C) = 0.5 + 0.3 + 0.15 = 0.95
- 计算码长:
L(A) = ⌈ -log₂(0.5) ⌉ = ⌈ 1 ⌉ = 1L(B) = ⌈ -log₂(0.3) ⌉ ≈ ⌈ 1.737 ⌉ = 2L(C) = ⌈ -log₂(0.15) ⌉ ≈ ⌈ 2.737 ⌉ = 3L(D) = ⌈ -log₂(0.05) ⌉ ≈ ⌈ 4.322 ⌉ = 5
- 将
F(si)转换为二进制并截取前L(si)位:A:F(A) = 0 -> 二进制 0.0000... -> 取前 1 位 -> **0**B:F(B) = 0.5 -> 二进制 0.1000... -> 取前 2 位 -> **10**C:F(C) = 0.8 -> 二进制 0.11001100... (0.8 = 0.1100₂循环) -> 取前 3 位 -> **110**D:F(D) = 0.95 -> 二进制 0.11110011... (0.95 ≈ 0.11110₂) -> 取前 5 位 -> **11110**(精确计算 0.95 二进制为无限小数0.111100110011...,取前5位得11110)
- 香农码表:
A: 0B: 10C: 110D: 11110
验证前缀码: 可以看到,没有码字是另一个码字的前缀(0不是10、110、11110的前缀;10不是110、11110的前缀;110不是11110的前缀)。
平均码长: L_avg = (0.5*1) + (0.3*2) + (0.15*3) + (0.05*5) = 0.5 + 0.6 + 0.45 + 0.25 = 1.8 比特/符号
信源熵: H(S) = -(0.5*log₂(0.5) + 0.3*log₂(0.3) + 0.15*log₂(0.15) + 0.05*log₂(0.05)) ≈ 1.6477 比特/符号 满足 1.6477 ≤ 1.8 < 2.6477。
总结
香农编码是一种基于符号概率分布、利用累加概率构造二进制前缀码的信源编码方法。它为大概率符号分配短码,小概率符号分配长码,其平均码长满足香农第一定理。虽然在实际压缩效率上不如霍夫曼编码等最优方法,但它是信息论发展史上第一个具体的变长编码方案,奠定了信源编码的理论基础,其核心思想(概率映射)影响深远。
频域中的奈奎斯特-香农定理
在上一篇介绍奈奎斯特-香农定理的文章中,我们看到当以每个周期不提供至少两个样本的频率对波形进行采样时,正弦波的频率特性将无法挽回地丢失。换句话说,如果我们以低于奈奎斯特速率的频率进行采样,我们就无法完美地重建正弦曲线。
2023-05-18 11:02:11
一种编码解码模式的肺分割算法
中输入多尺度图像,使用残差网络结枃作为编码模块,在扩展网络深度的冋时不造成网络退化问题;此外,在编码和解码之间利用空洞空间金字塔池化(ASPP)充分提取上文多尺度信息;最后利用级联操作,将捕捉到的信息与
资料下载
佚名
2021-04-13 10:46:58
基于双编码器网络结构的CGAtten-GRU模型
为了解决序列到序列模型中编码器不能充分编码源文本的问题,构建一种基于双编码器网络结构的Cgatten-GRU模型。2个
资料下载
佚名
2021-04-01 15:10:47
自编码器基础理论与实现方法、应用综述
自编码器是深度学习中的一种非常重要的无监督学习方法,能够从大量无标签的数据中自动学习,得到蕴含在数据中的有效特征。因此,自编码方法近年来受到了广泛的关注,已成功应用于很多领域,例如数据分类、模式识别
资料下载
佚名
2021-03-31 11:24:55
如何使用FPGA实现信道编码
信道编码发展迅速, 应用越来越广泛, 而信道编码的好坏对众多工程技术领域的发展有着重要影响,所以对信道编码的研究工作有着非常重要的意义。本论文从
资料下载
佚名
2020-08-18 17:11:10
香农解码器:PWM DAC的(更快)替代品
读者会认出著名的克劳德·埃尔伍德·香农(Claude Elwood Shannon),他被广泛誉为“信息论之父 ” ,也是许多发现和发明的鼻祖。其中包括一个优雅而开创性的(首次发表于1948年
2022-12-07 14:44:49
基于matla对香农公式仿真
基于matla对香农公式仿真陕西理工学院课程设计第PAGE 1 页 共NUMPAGES 8 页引言香农公式表明,信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。
后香农时代信息产业发展面临的十大挑战数学问题
徐文伟在演讲中说道,基于七十多年前的香农定理,信息产业才有了五十多年的高速发展,并发明了一代又一代的通信产品。在未来二三十年里,人类社会将进入万物感知、万物互联和万物智能的智能社会,并由此催生新的新的工作、生产和生活模式,这些都与七十年前
2020-11-20 17:33:21
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览