B=2W,奈奎斯特极限定理详解
一直没搞明白奈奎斯特极限定理的含义,网上搜了很久也没得到答案。最近深思几天后,终于有了点心得。顺便吐槽一下,csdn的提问栏目,有很多人用chatgpt秒回这个事,实在是解决不了问题,有时候人的问题大多数都是误入歧途,需要临门一脚,稍需点拨。遇见少有的一些问题时,chatgpt往往是长篇大论,毫不相干。
开始正题,为什么奈奎斯特定理说,码元的极限速率是两倍的带宽?
其实奈奎斯特在这里是有假设的,也就是这个定理适合的条件,有限带宽无噪声低通信道,其采用的码元应该是门波信号。
其中关键点是这个信道低通的,低通指的是多低的频率都能通过。这一点是网工教材上没有提到的,也是最误导人的一点。因为这个教材在B=2W这个公式给出之前,给出了模拟信道的带宽计算公式W=F2-F1,难免让人去深思一个信道为什么会有最高可通过频率和最低可通过频率。而紧接着就给出了B=2W这个在数字信息传输是计算包含0和1的码元传输速率的公式,且没有说明B=2W这个公式使用的信道是理想低通的。导致我纠结在《码元传输速率和最高/最低通过频率之差(即信道可通过的频率个数)有什么关系》这个问题上很长时间。这几天时间通过各种假象、模拟、验证,找各种人的各种说法,终于,忽地顿开金枷,这里扯断玉锁,今日方知F1=0。
如果B=2W这个公式的前提是F1需为0,那么B=2W中的这个W代表的便不是可通过的频率数,而是最高可通过频率,因为F2-F1=F2-0=F2了。
那问题就从《码元传输速率和最高/最低通过频率之差(即信道可通过的频率个数)有什么关系》变成了《码元传输速率和最高可通过频率有什么关系》,显然后者更容易解答一点,哪怕就是我一般的门外汉,也或许会意识到这两个东西可能会有关系。
好了,抛开对教材的抱怨情绪。在正式解释B=2W这个公式的原因前,我们还需要了解一些前提知识。
一、信道可通过的频率,这里的频率指的是什么?
我们以了解的同轴电缆和双绞线这样的金属导线为例,暂且不讨论光缆和无线信道等。这里的频率指的是电压或电流强度的变化快慢,而电压或电流强度的大小变化在时间轴上就会形成波,这里的频率说的也就是这个波的频率。由于有线信道中的信号衰减和信道本身质量问题(比如寄生电容、寄生电感、寄生电阻),以及传输过程中的干扰问题,信道可传输的频率是有上限的。传输频率超过此上限,到达对端时会失真,导致无法辨认。
二、码元的种类:
码元是表示0和1的符号,是一个固定市场的波形。我们知道,数字通信里边所说的波都是对电压或电流强度在时间轴上变化的描述。所以我们想要什么样的波,我们就可以通过调整电压去制造出来,只要是方便的区分或表示出来0和1就行。下面我们介绍几种码元,也就是几种描述0和1的波形,或者说是符号。
1、正弦波
正弦波如何在电路中生成的呢?我想需要一个振荡器。那怎么让生成的正弦波作为载波承载我们的数据呢?我想需要一个开关。例如,开关闭合时,线路上传递正弦波,表示1,开关断开时,线路上无正弦波,表示0。具体实现方法,我们不讨论。
我们以特定频率的N正弦波为码元来表示数字信号,在时间轴上N个完整的正弦波表示0或1。当N=1时,表示一个完整的正弦波表示0或1,此时数据的传输速率在这个特定频率下最大。
如果我们在特定的频率下还要继续加大数据的传输速率,则会导致在单个正弦波的周期中,只能传输不完整的正弦波,或许会首位交错,甚至会失去正弦波的判断依据,导致对端不能准确识别波形,从而导致传输出错。
此时,加快数据传输速率的唯一办法就是提高传输使用正弦波的特定频率,但是我们知道对于固定有限信道来说,可通过频率时有上线的。那么对于一个固定的有线信道来说,最大数字传输速率就是以最高可通过频率为特定频率,且使N=1。此时的波特率B=W=F2-F1=F2-0=F2。可见使用正弦波作为一个码元时,码元速率(即:波特率)并不等于2倍的带宽。
2、方波
服务器中的时钟信号就是方波,方波是什么样呢?见下图
如果我们以特定频率的一个方波为码元,且以高低电平来表示0和1,再让这个特定频率是信道可通过的最高频率。此时Bmax还是等于W。但根以正弦波为码元的编码方式不同的是,我么一个码元中可以携带两个数字信号了。但此时的输入信号是没有用的,因为0和1无法分离,导致一个码元表示的不是10就是01,不可用。如果我们让10==1、01==0,就变得可用了,但是数据传输速率C还是等于B。
此处说明一个点:
我们可以制造出来用于传输信息的波形是有很多的,为了方便研究什么样的波形能通过信道,我们使用傅里叶变换将一个复杂波形拆分成多个简单的正弦波信形(基波+多个辅波)。然后我们去研究一个信道能通过的正弦波的范围,就能再通过傅里叶逆变换,我们就能确定一个特定的复杂波能不能通过这个信道。其中主要观察这个特定复杂波基波的频率是不是在可通过的正弦波的频率范围呢
3、冲激波信号
冲激波是什么样子?见下图。
可见在时域上冲激波表现为一根竖线,与上述的方波相比较,它的周期T几乎无限接近于0。可以说它的频率大到无穷了。为了方便理解这个冲激波,我们反向想象一下,如果在时域图上出现了一条横线表示的是什么意思?一条横线,在时域图上,波的幅度没有任何变化,如果要说这条横线是个周期性的波的话,那可以把它想象成一个周期无限大的波,可以想象的到,一条横线谈不上任何频率任何幅度,也无需任何频率任何幅度的波来傅里叶逆变换成它。如果要说有的话,那得是频率无限小幅度也无限小、都趋近于0的波,这样的波在频域图上可能就在(0,0)处表示为一个点。说明一条横线的波,不需要任何幅度的任何正弦波来合成它。结合我们的常识和我们古老的哲学("太极生两仪,两仪生八卦……😄"),我们可以推演一下,在时域图上表现为一条竖线的冲激波,它可能需要所有幅度的所有正弦波来合成它。接下来我们通过傅里叶变换验证一下我们的想法:
可见冲激波的频谱是一条直线,幅值为常数1,频率范围为无穷,即包含所有的频率成分,且每个频率分量的权重都无限趋于相等。
4、门波信号
门波信号是什么样子?见下图
可见,门波和冲激波相比,门波就是周期T被放大的冲激波。通过傅里叶变换,可见门信号的频谱包含了许多成分,但不至于像冲激信号那样,包含了所有频率分量。门信号的频谱符合sinc函数的分布规律:
定性的来看:
门信号的持续时间越短,越接近冲激信号,内涵的每个频率分量的权重就越接近相同。
门信号的持续时间T越长,即频率F越小,其频谱特性越接近sinc,内涵的每个频率分量的权重越符合sinc函数的规律,高频分量的权重越小,且基波频率B的值越小。
门信号的持续时间T越短,即频率F越大,其频谱特性越接近冲击信号,内涵的每个频率分量的权重越符合冲激信号的规律,高频分量的权重越大,且基波频率B的值就越大。
通过对门信号和冲激信号傅里叶变化分析,我们可以得到一个非常重要的结论:
门信号的频率F,与其频谱中的基波信号的频率B是一种线性关系:F=2B。
自此,通过上述的结论,我们得出:
如果使用门信号作为码元传输数字信号,使其基波信号的频率B达到信道的最高可通过频率。这时在奈奎斯特假设成立的前提下,即F1=0,信道为有限带宽无噪声低通信道的情况下,码元的最高传输速率Bmax=2W。
四、结论
我们的通过分析码元种类,得出只有门波信号作为码元时,才会达到达到固定信道的最大的码元传输速率,且等于2倍的最大可通过正弦波的频率,也就是在有限带宽无噪声低通理想信道中的2倍带宽。所以,以我目前理解来看,其实这个定理给的感觉有点鸡肋。干嘛约定了信道的低通之后,又来用带宽表示最大可通过正弦波的频率。我想有一种可能,W=F2-F1中的F1,也就是最低可通过正弦波的频率对于有限信道来说普遍不高,就像电话线的可通过频率为300Hz~3400Hz。由于最低通过频率本身不大,所以将W还是F2带入最大码元率的计算公式中差别不大,再加上信号的衰减,信道的寄生电阻/电容/电感等,实际的码元率也达不到最大的值,所以挣好去一个偏小一点的值,当作误差了。
以上都属本人个人理解,供大家参考,也欢迎大家指正。
相关文章:

B=2W,奈奎斯特极限定理详解
一直没搞明白奈奎斯特极限定理的含义,网上搜了很久也没得到答案。最近深思几天后,终于有了点心得。顺便吐槽一下,csdn的提问栏目,有很多人用chatgpt秒回这个事,实在是解决不了问题,有时候人的问题大多数都是…...

【Pytorch 】Dataset 和Dataloader制作数据集
文章目录 Dataset 和 Dataloader定义Dataset定义Dataloader综合案例1 导入两个列表到Dataset综合案例2 导入 excel 到Dataset综合案例3 导入图片到Dataset导入官方数据集Dataset 和 Dataloader Dataset指定了数据集包含了什么,可以是自定义数据集,也可以是以及官方数据集Data…...

[Algorithm][动态规划][两个数组的DP][正则表达式匹配][交错字符串][两个字符串的最小ASCII删除和][最长重复子数组]详细讲解
目录 1.正则表达式匹配1.题目链接2.算法原理详解3.代码实现 2.交错字符串1.题目链接2.算法原理详解3.代码实现 3.两个字符串的最小ASCII删除和1.题目链接2.算法原理详解3.代码实现 4.最长重复子数组1.题目链接2.算法原理详解3.代码实现 1.正则表达式匹配 1.题目链接 正则表达…...

Ffmpeg安装和简单使用
Ffmpeg安装 下载并解压 进入官网 (https://ffmpeg.org/download.html),选择 Window 然后再打开的页面中下滑找到 release builds,点击 zip 文件下载 环境变量配置 下载好之后解压,找到 bin 文件夹,里面有3个 .exe 文件 然后复制…...
29、matlab算数运算汇总2:加、减、乘、除、幂、四舍五入
1、乘法:times, .* 语法 C A.*B 通过将对应的元素相乘来将数组 A 和 B 相乘。 C times(A,B) 是执行 A.*B 的替代方法, 1)将两个向量相乘 代码及运算 A [1 0 3]; B [2 3 7]; C A.*BC 2 0 212) 将两个数组相乘 代码及运算 A [1 0 3;…...

<Rust><iced>基于rust使用iced库构建GUI实例:动态改变主题色
前言 本专栏是Rust实例应用。 环境配置 平台:windows 软件:vscode 语言:rust 库:iced、iced_aw 概述 本篇构建了这样的一个实例,可以动态修改UI的主题,通过菜单栏来选择预设的自定义主题和官方主题&#…...

k8s——安全机制
一、安全机制说明 Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server是集群内部各个组件通信的中介, 也是外部控制的入口。所以Kubernetes的安全机制基本就是围绕保护API Server来设计的。 比如 kubectl 如果想…...

Linux驱动应用编程(三)UART串口
本文目录 前述一、手册查看二、命令行调试串口1. 查看设备节点2. 使用stty命令设置串口3. 查看串口配置信息4. 调试串口 三、代码编写1. 常用API2. 例程线程优化 前述 在开始实验前,请一定要检查测试好所需硬件是否使用正常,不然调试过程中出现的问题&am…...

【设计模式深度剖析】【4】【行为型】【策略模式】
文章目录 策略模式定义英文原话直译 角色类图策略接口Strategy:具体策略类上下文类Context测试类 策略模式的应用策略模式的优点策略模式的缺点策略模式的使用场景 策略模式 策略模式(Strategy Pattern) Strategy策略也称作Policy政策。 想…...

opencv dnn模块 示例(26) 目标检测 object_detection 之 yolov10
文章目录 1、yolov10简要介绍1.1、双标签分配策略1.2、架构改进1.3、性能1.4、预训练模型1.5、网络有关层说明 2、测试2.1、官方测试2.2、opencv dnn2.2.1、仅运行到内部"NMS"步骤之前的层2.2.2、完整代码2.2.2、完整实现所有层 2.3、onnxruntime测试2.4、tensorrt 1…...

【python进阶】python图形化编程之美--tkinter模块初探
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

discuz点微同城源码34.7+全套插件+小程序前端
discuz点微同城源码34.7全套插件小程序前后端 模板挺好看的 带全套插件 自己耐心点配置一下插件 可以H5可以小程序...

ActiveMQ 介绍、下载、安装和控制台
ActiveMQ 介绍 Apache ActiveMQ 是一款非常成熟且功能全面的开源消息中间件,由Apache软件基金会维护。它遵循 Java Message Service (JMS) 规范,这意味着它提供了一组标准的 API,允许 Java 应用程序以一种标准化的方式发送和接收消息。 以下…...

MacOS M系列芯片一键配置多个不同版本的JDK
第一步:下载JDK。 官网下载地址:Java Archive | Oracle 选择自己想要下载的版本,一般来说下载一个jdk8和一个jdk11就够用了。 M系列芯片选择这两个,第一个是压缩包,第二个是dmg可以安装的。 第二步:编辑…...

源码文章上传无忧,论坛小程序支持
前言 在数字化时代,知识的分享与传播显得愈发重要。为了满足广大创作者和求知者的需求,我们推出了全新的论坛小程序,不仅支持文章、源码、链接等多样化内容的上传,还实现了付费观看功能,为创作者们提供了一个展示才华…...
Docker面试整理-如何优化Docker容器的性能?
优化Docker容器的性能可以从多个方面入手,以下是一些建议: 选择合适的基础镜像:使用轻量级的基础镜像,如基于Alpine Linux的镜像,可以减少镜像的大小和启动时间。避免使用过于庞大的操作系统镜像。优化Dockerfile:减少Dockerfile中的不必要指令和层,以最小化镜像的大小。…...

list(二)和_stack_queue
嗨喽大家好,时隔许久阿鑫又给大家带来了新的博客,list的模拟实现(二)以及_stack_queue,下面让我们开始今天的学习吧! list(二)和_stack_queue 1.list的构造函数 2.设计模式之适配器和迭代器 3.新容器de…...

查询SQL02:寻找用户推荐人
问题描述 找出那些 没有被 id 2 的客户 推荐 的客户的姓名。 以 任意顺序 返回结果表。 结果格式如下所示。 题目分析: 这题主要是要看这null值会不会用,如果说Java玩多了,你去写SQL时就会有问题。在SQL中判断是不是null值用的是is null或…...

2、Tomcat 线程模型详解
2、Tomcat 线程模型详解 Tomcat I/O模型详解Linux I/O模型详解I/O要解决什么问题Linux的I/O模型分类 Tomcat支持的 I/O 模型Tomcat I/O 模型如何选型 网络编程模型Reactor线程模型单 Reactor 单线程单 Reactor 多线程主从 Reactor 多线程 Tomcat NIO实现Tomcat 异步IO实现 Tomc…...
对硬盘的设想:纸存、执行存
固态硬盘出现后,发现它的擦写次数受限,越是便宜的固态硬盘,擦写次数越少。于是,有了“纸存”的设想,即硬盘上的单元只能改写一次,就像拿钢笔在纸上写字一样。这时,文件系统、数据库该怎么设计&a…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...