《信息论与编码课程笔记》——信源编码(1)
目录
一、信源编码基本概念
1. 定义与目的
2. 编码示例
3. 编码分类
4. 唯一可译码的判断标准
5. 编码评价指标
二、香农第一定理(无失真可变长信源编码定理)
1. 核心内容
2. 关键概念与指标
3. 数据压缩的本质
4. 例子与启示
5. 定理的意义
一、信源编码基本概念
信源编码的核心:通过去除冗余(相关性或非均匀分布)提高传输效率。
1. 定义与目的
- 定义:将信源输出的符号(如文字、数字、图像等)转换为适合信道传输的信号(如二进制码、电脉冲等)。
- 目的:
- 能够传输:匹配信源与信道的特性,确保接收端能正确译码。
- 有效传输:减少冗余信息,提高传输效率(用更少的码元表示信源符号)。
2. 编码示例
- Morse码:用“点(·)”和“划(—)”的组合表示字母(如A=·—,B=—···)。
- 汉字电码:每个汉字用4位阿拉伯数字编码(如“中”=0022)。
- ASCII码:用7位或8位二进制数表示字符(如A=01000001)。
3. 编码分类
分类依据 | 类型 | 说明 |
---|---|---|
编码范围 | 基本源编码 | 对单个符号编码(如字母A→01)。 |
扩展源编码 | 对符号序列编码(如单词“ABC”→001011)。 | |
信息是否损失 | 无失真编码 | 完全保留信息(如Huffman码),满足I(X;Y)=H(X)。 |
有失真编码 | 允许部分信息损失(如JPEG压缩),满足I(X;Y)<H(X)。 | |
译码唯一性 | 唯一可译码 | 任意码字序列只能唯一译码(如前缀码)。 |
非唯一可译码 | 存在歧义(如编码{0, 01},序列“01”可译作“01”或“0”+“1”)。 | |
码长是否固定 | 定长编码 | 所有码字长度相同(如ASCII码)。 |
变长编码 | 码长可变(如Huffman码,高频符号用短码)。 |
4. 唯一可译码的判断标准
- 等长码:若为非奇异码(所有码字互不相同),则唯一可译。
- 变长码:若为前缀码(无码字是其他码字的前缀),则唯一可译。
- 不是前缀码也可能唯一可译:{0, 01} 不是前缀码(“0”是“01”的前缀),译码时也不会歧义(每次出现1都表示一次01)。
5. 编码评价指标
- 平均码长 L:
,其中
为码字长度。
- 编码效率 η:
,越接近1效率越高(r 为码元符号数,如二进制时 r=2)。
二、香农第一定理(无失真可变长信源编码定理)
香农第一定理揭示了信源编码的极限效率,为无损压缩提供了理论基础。通过扩展信源和变长编码,使平均码长逼近 logrH(S)。ZIP、PNG等无损压缩算法均基于此原理。
1. 核心内容
研究对象:离散无记忆信源(DMS)的N次扩展信源 。
定理表述:对 进行变长编码,平均码长
满足:
其中:
- H(S):信源的熵(单位:比特/符号)。
- r:码元符号数(如二进制时 r=2)。
:平均每信源符号分配的码元数。
物理意义:
- 下限:无失真压缩的极限为
,无法突破。
- 逼近极限:通过扩展信源(增大 N)和变长编码,可使平均码长无限接近熵限。
2. 关键概念与指标
-
平均码长
:
- 衡量编码效率的核心指标,越小越好。
- 对于定长编码,
固定;变长编码可通过概率匹配优化。
-
信息传输率 R:
- 定义:单位码元携带的信息量(单位:比特/码元)。
- 计算公式:
- 基本源编码:
。
- 扩展源编码:
。
- 基本源编码:
-
编码效率 η:
- 定义:实际信息传输率与理论最大值的比值。
- 公式:
(当 r=2 时,η=R)。
- 理想情况:η→1(平均码长逼近熵限)。
3. 数据压缩的本质
- 有记忆信源:冗余源于符号间的相关性,通过预测编码、变换编码去除。
- 无记忆信源:冗余源于符号概率的非均匀分布,通过统计编码(如Huffman)逼近熵限。
压缩途径:
- 扩展信源:增大 N 以减少统计波动(如对字母序列而非单个字母编码)。
- 变长编码:高频符号用短码,低频符号用长码(如Huffman码)。
4. 例子与启示
示例:二元信源 S={x1,x2},概率 P(x1)=0.9,P(x2)=0.1。
- 熵:
比特/符号。
- 二进制编码下限:
码元/符号。
1. 单符号编码(N=1)
- 编码方式:直接对每个符号独立编码
- 示例:x₁→0,x₂→1
平均码长计算: L = 1×P(x₁) + 1×P(x₂) = 0.9×1 + 0.1×1 = 1 码元/符号
编码效率: η = H(S)/L = 0.469/1 = 46.9%
2. 扩展信源编码(N=2)
-
编码对象:符号对(共4种组合)
- 概率分布:
符号对 概率 x₁x₁ 0.81 x₁x₂ 0.09 x₂x₁ 0.09 x₂x₂ 0.01
- 概率分布:
Huffman编码示例:
x₁x₁ → 0 (码长1)x₁x₂ → 10 (码长2) x₂x₁ → 110 (码长3)x₂x₂ → 111 (码长3)
平均码长计算:L₂ = 0.81×1 + 0.09×2 + 0.09×3 + 0.01×3 = 1.29 码元/2符号
→ L = 1.29/2 ≈ 0.645 码元/符号
效率提升:η = 0.469/0.645 ≈ 72.7%
3. 极限情况(N→∞)
理论结果:当 N→∞ 时,L → H(S) = 0.469 码元/符号,η → 100%
5. 定理的意义
- 理论极限:给出了无失真压缩的最低码率(熵限)。
- 编码指导:
- 必须采用变长编码和扩展信源才能高效逼近极限。
- 实际编码(如Huffman)是定理的工程实现。
- 推广性:可扩展至平稳有记忆信源(极限熵 H∞ 替代 H(S))。
相关文章:
《信息论与编码课程笔记》——信源编码(1)
目录 一、信源编码基本概念 1. 定义与目的 2. 编码示例 3. 编码分类 4. 唯一可译码的判断标准 5. 编码评价指标 二、香农第一定理(无失真可变长信源编码定理) 1. 核心内容 2. 关键概念与指标 3. 数据压缩的本质 4. 例子与启示 5. 定理的意义…...
2022年8月,韩先超对中移信息进行微服务架构原理(Docker+k8s+DevOps+Go等)培训
2022年8月,韩先超对中移信息进行微服务架构原理(Dockerk8sDevOpsGo等)培训 2022年8月,在企业数字化转型和云原生架构加速演进的背景下, 中移信息技术有限公司特别邀请云原生与DevOps领域专家 韩先超老师,…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】8.4 数据故事化呈现(报告结构设计/业务价值提炼)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 8.4 数据故事化呈现:从报告结构到业务价值的深度融合一、数据故事化的核心价值体系(一)报告结构设计的黄金框架1. 业务场景锚定ÿ…...
Docker 核心目录结构
1. Docker 核心目录结构 数据存储目录 默认根目录:/var/lib/docker Docker 所有运行时数据(镜像、容器、卷、网络配置等)的默认存储位置。 bash 复制 下载 # 查看 Docker 数据根目录 docker info | grep "Docker Root Dir" # 输出…...
【工具推荐】Code2Prompt
DeepWiki工具可以帮我们快速理解 GitHub 项目,简直是理解陌生开源项目的利器! 但是,它有个小小的“遗憾”——只能解析在线的 GitHub 项目。 如果是本地项目怎么办,还要特意上传,no,code2prompt 就是一款…...
OpenCV定位地板上的书
任务目标是将下面的图片中的书本找出来: 使用到的技术包括:转灰度图、提取颜色分量、二值化、形态学、轮廓提取等。 我们尝试先把图片转为灰度图,然后二值化,看看效果: 可以看到,二值化后,书的…...
Spring Cloud:概述,服务注册和服务发现,多机部署和负载均衡
什么是微服务 就是将一个大型的应用程序拆分成多而小的独立的服务模块,每个服务模块围绕某个业务功能建立,具有独立的数据库,服务栈,并通过轻量级的通信协议进行交互。 单体架构 就是将所有的业务和功能都打包在一个jar包中&…...
Linux的基础开发工具
目录 前言: 1、包管理器yum 1.1 软件包的依赖 1.2 镜像源 1.3 查找/安装/卸载软件 2、编辑器vim 2.1 命令模式(默认) 2.1.1 撤销与反撤销 2.1.2 光标定位 2.1.3 复制&&剪切(删除)&&粘贴 2.1.4 替换 2.1.5 插入模式 2.1.6 V-Block模式 …...
解锁跨平台开发的新时代——Compose Multiplatform
解锁跨平台开发的新时代——Compose Multiplatform 在当今移动和桌面应用程序开发领域,跨平台解决方案是开发者们梦寐以求的工具。而由JetBrains打造的Compose Multiplatform正是这样一款现代UI框架,它基于Kotlin技术,为开发者构建高性能且美观的用户界面提供了极大的便利和…...
键盘固件刷写详解:Bootloader
键盘固件刷写详解:从入门到精通 引言 作为一名机械键盘爱好者,相信大家都曾经面临过刷写固件的问题。无论是想要自定义按键功能,还是升级键盘的固件,掌握刷写技巧都是非常必要的。本文将全面介绍不同类型的引导加载程序…...
网络原理初识
本来想从网络的发展史开始写,之后再写网络的定义啥的,但快写完了才发现,这不课本教材吗,没劲,遂弃之,重撰,删芜就简.写点我认为,对程序员来说真正有用的东西 目录 IP地址 概念 格式 特殊地址 端口号 概念 格式 协议 概念 知名协议的默认端口 五元组 协议分层 OS…...
PVP鼠标推荐(deepseek)
下面有不懂的自行百度查找👍 ❤️ 以下是几款在 双击性能(DBC) 和 拖拽点击(DC) 方面表现优秀的游戏鼠标推荐,结合了硬件性能、微动寿命以及玩家口碑: 1. 罗技 G102/G203 Lightsync 特点&#…...
Navee滑板车强势登陆中国,以智能科技重塑城市出行新风尚
当科技与潮流邂逅,城市出行迎来了一场前所未有的变革。全球智能出行领域的先锋品牌Navee,携其多款旗舰滑板车产品——ST3、GT3、V系列等,正式进军中国市场。凭借“颜值、性能、安全、智能”四大核心优势,Navee正以破竹之势重新定义…...
【Linux网络】网络命令
Ping Ping命令是一种用于测试网络连接状况的工具,在Windows、Linux、macOS等操作系统中都可以使用。以下是其详细介绍: 它主要通过向目标主机发送Internet控制报文协议(ICMP)的回声请求(Echo Request)数据…...
【JS逆向基础】面向对象
1,OOP编程思想 面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性。面向对象编程是程序员发展的分水岭,很多初学者会因无法理解面向对象而放弃学习编程。 面向对象编程(Obiect:oriented Programming…...
# 如何使用OpenCV进行发票的透视变换和二值化处理
如何使用OpenCV进行发票的透视变换和二值化处理 引言 在自动化处理发票和其他文档时,图像预处理是一个关键步骤,它可以帮助提高OCR(光学字符识别)的准确性。透视变换用于校正图像中的透视失真,而二值化处理则可以简化…...
NetSuite 如何得到所有Item最近一次采购订单的货品单价?
我们知道,如果取Item主数据的数据,得到的是很多相关transaction的Item 货品平均价值;如果只想得到最近一次采购订单上的采购单价,主数据上应该无法直接得到,那该如何处理?我们可以利用Saved Search来拉取相…...
[5-2] 对射式红外传感器计次旋转编码器计次 江协科技学习笔记(38个知识点)
1、 2、 3、这些缩写通常出现在嵌入式系统或微控制器的上下文中,它们各自有不同的功能: • RCC:Reset and Clock Control(复位和时钟控制)。它负责管理微控制器的时钟系统,包括时钟源的选择、时钟频率的设置…...
阿里云 golang 一面
消息队列 分布式文件系统 Linux的虚拟网络设备 TCP SSL/TLS 场景:对于打车场景,如何设计一个系统来处理并发打车请求? 设计一个处理并发打车请求的系统需要考虑多个方面,包括系统架构、数据存储、负载均衡和实时性。以下是一个基…...
【C++ Qt】多元素控件(ListWidget、TableWidget、TreeWidget)
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 本章将通过代码示例详细介绍了Qt中QListWidget、QTableWidget和QTreeWidget三种多元素控件的使用方法与核心功能,涵盖列表的增删操作、表格…...
排序算法-冒泡排序
冒泡排序一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为元素会经由交换慢…...
C++ 工具链与开发实践:构建安全、高效与创新的开发生态
引言 在 C 的技术演进中,工具链的革新与开发实践的迭代始终是推动语言生命力的核心动力。从内存安全的攻防体系到嵌入式设备的能效优化,从跨平台开发的降本增效到开发者社区的生态构建,C 正通过工具链与方法论的双重升级,应对复杂…...
uni-pages-hot-modules插件:uni-app的pages.json的模块化及模块热重载
uni-pages-hot-modules uni-app的pages.json的模块化及模块热重载 uni-app的pages.json的模块化及模块热重载 解决uni-app的pages.json无法模块化的问题,并且解决模块热重载和缓存的问题 安装 npm i uni-pages-hot-modules -Suni-app vite版本(vue3)示例项目 uni-app webpa…...
【WEB3】区块链、隐私计算、AI和Web3.0——数据民主化(1)
区块链、隐私计算、AI,是未来Web3.0至关重要的三项技术。 1.数据民主化问题 数据在整个生命周期(生产、传输、处理、存储)内的隐私安全,则是Web3.0在初始阶段首要解决的问题。 数据民主化旨在打破数据垄断,让个体能…...
从0到1:用Lask/Django框架搭建个人博客系统(4/10)
摘要:本文深入解析了使用Lask和Django构建个人博客系统的全过程。从技术选型的考量,突出Lask的轻量灵活与Django的强大功能,到开发环境搭建、项目初始化,再到核心功能实现如文章管理、用户认证与权限控制,详细阐述了开…...
探索 C++23 的 views::cartesian_product
文章目录 一、背景与动机二、基本概念与语法三、使用示例四、特点与优势五、性能与优化六、与 P2374R4 的关系七、编译器支持八、总结 C23 为我们带来了一系列令人兴奋的新特性,其中 views::cartesian_product 是一个非常实用且强大的功能,它允许我们轻…...
微软拼音自定义词库方法
1.准备文件input.txt 令狐冲 郭靖2.使用python转成微软拼音需要的格式 from xpinyin import Pinyin # pip install xpinyin -i https://pypi.tuna.tsinghua.edu.cn/simplep Pinyin()with open(input.txt, r, encodingutf-8) as infile:with open(output.txt, w, encodingutf…...
SQLite3常用语句汇总
SQLite 命令行工具(sqlite3 shell) 中的内置命令 命令作用说明.open filename.db打开或创建一个 SQLite 数据库文件.tables列出当前数据库中的所有表.schema [table]查看某个表或所有表的建表语句(DDL).headers ON/OFF开启或关闭…...
数据库设计三范式
第一范式 (1NF) 每个表中的每一列都是原子值 每个表中的每一行都是唯一的 下面这个表格就是不符合第一范式的例子:因为学时数能够拆分为讲课和实验。所以他并不是每一列都是原子值。 不仅要考虑列是否是原子值,还需要考虑每列的值是否可拆分。 第二范…...
GoWeb开发
学习目标: 本篇要达到的目的,能为后续复习提供极大便利。 (当我写下本篇博客时,已复习3遍) 一、网络通信概述 (为本篇基础核心内容) 1、什么是网络通信? 网络通信是指不同设备&…...
(7)Nokov 室内光学跟踪系统
文章目录 前言 7.1 所需硬件 7.2 Nokov 系统设置 7.3 配置旋翼机 7.4 启动 Nokov 模块 7.5 MAVProxy 准备 7.6 测试飞行 7.7 参数说明 前言 本文将介绍如何通过 Nokov 运动捕捉系统向旋翼机传输姿势信息。联系方式:NOKOV | Optical Motion Capture System。…...
Linux Shell编程和循环语句
一.for循环语句 1.for语句的结构2.for循环语句实例①根据姓名列表来批量创建多个用户②根据IP地址列表检查主机状态 二.使用while循环语句1.while语句结构2.while循环语句应用①批量添加规律编号用户②猜价格游戏 三 until循环语句1.until语句结构① 计算1-50的和 1.for语句的结…...
Java后端程序员学习前端之JavaScript
1.什么是JavaScript 1.1.概述 JavaScript是一门世界上最流行的脚本语言javaScript 一个合格的后端人员,必须要精通JavaScript 1.2.历史 JavaScript的起源故事-CSDN博客 2.快速入门 2.1.引入JavaScript 1.内部标签 <script>//.......</script> --…...
redis多路复用IO模型 以及 6.0引入的多线程模型
redis为什么选择单线程 采用多线程的话,会出现上下文切换的开销采用多线程,会带来共享资源的竞争控制,比如多个线程同时访问同一个资源(键值)时,需要额外的手段来保障共享资源的正确性,会带来额…...
101alpha_第6个
第6个alpha (-1 * correlation(open, volume, 10)) 这个就是看这两个相似性。10天之内的 如果结果为正且数值较大,投资者可能会认为在开盘价上涨时成交量萎缩,市场上涨动力不足,可能是卖出信号;反之,开盘价下跌时成交…...
crawl4ai能替代scrapy等传统爬虫框架吗?
传统爬虫框架就像拿着渔网在数字海洋中捕鱼——虽然能捞到东西,但面对现代网站的复杂性时常常"漏网之鱼"满天飞。以Scrapy为代表的工具存在三大致命短板:首先是JavaScript盲区,对动态渲染内容束手无策,就像试图用收音机…...
Sui Basecamp 2025 全栈出击
“我们不仅仅是在构建一个 L1,我们是在重建互联网。” — — Mysten Labs 首席产品官 Adeniyi Abiodun 本届 Sui Basecamp 汇聚了 Web3 领域的建设者、合作伙伴和思想领袖,为期两天,不仅展示了 Sui 的未来,也展现了去中心化互联网…...
计算机体系架构-----设计模式:状态模式(从程序员加班问题切入)
文章目录 1.梦开始的地方2.代码1.0版本3.代码2.0版本4.代码3.0版本5.梦结束的地方 最近在学习这个专业课里面的体系结构这门课程,作为专业里面的一门基础课,这个课程里面主要讲解的就是软件的设计思想,一些历程之类的,包括了面向对…...
【C/C++】RPC与线程间通信:高效设计的关键选择
文章目录 RPC与线程间通信:高效设计的关键选择1 RPC 的核心用途2 线程间通信的常规方法3 RPC 用于线程间通信的潜在意义4 主要缺点与限制4.1 缺点列表4.2 展开 5 替代方案6 结论 RPC与线程间通信:高效设计的关键选择 在C或分布式系统设计中,…...
数据结构之串
一、串的定义与基本概念 1. 串的定义 定义:串是由零个或多个字符组成的有限序列,记作 s"a1a2…an",例如 "data structure"、"123" 等。 空串:无任何字符,长度为 0,…...
基于腾讯云MCP广场的AI自动化实践:爬取小红书热门话题
基于腾讯云MCP广场的AI自动化实践:爬取小红书热门话题 我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:www.trae.com.cn/?utm_source… 🔎 背景 在人工智能快速发展的时代,AI技术不仅重…...
AI领域的MCP(Model-Centric Paradigm)
1. 什么是MCP(Model-Centric Paradigm)? MCP(Model-Centric Paradigm)是人工智能开发中的一种核心理念,强调以模型的优化与改进作为主要驱动因素来提升AI系统的表现。在MCP模式下,开发者专注于…...
裸辞8年前端的面试笔记——JavaScript篇(一)
裸辞后的第二个月开始准备找工作,今天是第三天目前还没有面试,现在的行情是一言难尽,都在疯狂的压价。 下边是今天复习的个人笔记 一、事件循环 JavaScript 的事件循环(Event Loop)是其实现异步编程的关键机制。 从…...
力扣刷题Day 41:除自身以外数组的乘积(238)
1.题目描述 2.思路 方法1:搞一个数组存放各元素之前所有数的乘积(头为1),再搞一个数组存放各元素之后所有数的乘积(尾为1)。 方法2:上面的方法是很好理解的,在此基础上应该如何优化…...
金仓数据库征文-金仓KES数据同步优化实践:逻辑解码与增量同步
目录 一.同步场景与方案选型 二.同步环境配置 1.前置条件验证 2.逻辑解码配置 三.同步实施与问题排查 1.结构映射规则 2.增量数据捕获 3.数据一致性校验 四.性能调优实践 1.同步线程优化 2.批量提交优化 3.资源监控指标 五.典型场景解决方案 1.双向同步冲突处理 …...
【前端基础】9、CSS的动态伪类(hover、visited、hover、active、focus)【注:本文只有几个粗略说明】
一、什么是伪类 选择器的一种,用于选择处于特定状态的元素。 最常见的现象:鼠标放在某些文字上面,文字就会加上颜色。 鼠标没放上去之前: 鼠标放上去之后: 二、动态伪类 图片来源(链接文章也有其他伪…...
企业开发平台大变革:AI 代理 + 平台工程重构数字化转型路径
在企业数字化转型的浪潮中,开发平台正经历着前所未有的技术革命。从 AST(抽象语法树)到 AI 驱动的智能开发,从微服务架构到信创适配,这场变革不仅重塑了软件开发的底层逻辑,更催生了全新的生产力范式。本文…...
ZooKeeper工作机制与应用场景
目录 1.1、概述1.2、选举机制1.2.1、选举触发条件1.2.2、选举规则1.2.3、选举过程详解 1.3、数据同步机制1.3.1、正常同步1.3.2、宕机同步 1.4、客户端常用命令1.5、应用场景1.5.1、配置管理1.5.2、命令服务1.5.3、分布式锁服务1.5.4、集群管理1.5.5、分布式ID1.5.6、分布式协调…...
VR制作软件用途(VR制作软件概述)
虚拟现实(VR)制作软件作为现代科技的瑰宝,正以独特的魅力重塑各行各业。 通过构建三维虚拟环境,这些软件提供了前所未有的沉浸式体验,还推动了技术革新与产业升级。本文将探讨VR制作软件的主要用途,并重点…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】电商数据分析案例-9.1 业务场景与数据准备
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 9.1 业务场景与数据准备9.1.1 业务场景描述核心业务目标业务挑战 9.1.2 数据来源与获取数据源构成数据获取方案 9.1.3 数据结构与字段说明核心数据表设计1. 订单事实表&…...