目录

  • 深入浅出通信原理Python代码版

    • 码元(Symbol)详解
    • BPSK旋转向量理解
    • PSK=映射+调制
    • 调制解调与傅里叶级数展开
    • 矩形波的复傅立叶级数
    • 离散谱推广到连续谱
    • 各种有用的频谱指标

深入浅出通信原理Python代码版

深入浅出通信原理是陈爱军的心血之作,于通信人家园连载,此处仅作python代码笔记训练所用
陈老师的连载从多项式乘法讲起,一步一步引出卷积、傅立叶级数展开、旋转向量、三维频谱、IQ调制、数字调制等一系列通信原理知识

码元(Symbol)详解

码元,对应英文Symbol,又称符号

维基百科:持续一段固定时间的通信信道有效状态就是码元

陈老师解释:在通信信道中持续固定时间,具有一定相位或者幅值的一段余弦载波

网友:在信道(空中或电缆中)码元或者符号就是持续一定(某个)时间,具有一定(某个)幅度和一定(某个)相位的正弦波。

BPSK码元有2种(0,\(\pi\)),QPSK码元有4种,16QAM有16种码元。

设某数字调制对应码元有N种,则每个码元承载的比特数有\(log_2N\)个

但调制效率愈高,抗干扰能力愈差,对信道质量要求愈高

码元速率,也就是波特率,单位是Baud,其实就是每秒钟传输多少的码元,进一步的说,波特率是码元周期的倒数。

BPSK旋转向量理解

详见连载44-46

旋转向量在实轴上的投影就是BPSK调制后的信号,初始相位是0或者pi,但最后相位不一定落在相位0或者pi上

接收到的是个实信号,但可以分解成两者旋转向量之和:
\[ s(t)=\cos\omega_0t=Re\{e^{j\omega_0t} \}=\frac{1}{2}(e^{jw_0t}+e^{-jw_0t}) \]
此时乘上初始位置在实轴,顺时针旋转且旋转角速度是w0的单位旋转向量\(e^{-jw_0t}\)
\[ 2s(t)e^{-jw_0t}=1+2e^{-jw_0t} \]
通过低通滤波器或积分器便解调出1,即发送端发送的是-1

PSK=映射+调制

调制解调与傅里叶级数展开

IQ调制实际就是将数据作为傅里叶系数与正、余弦信号相乘后合成发送的过程

IQ解调即求解傅里叶级数的过程

\[ s(t)=a\cos(w_0t)-bsin(w_0t) \]

\[ Fourier \ \ Transform: f(t)=\frac{a_0}{2}+\sum_{k=1}^{\infty}(a_kcoskw_0t+b_ksinkw_0t)\ \]

矩形波的复傅立叶级数

周期方波信号的傅里叶级数 \(c_k=\frac{1}{2}\frac{sin(k\omega_0T_0/4)}{k\omega_0T_0/4}=\frac{1}{2}\frac{sin(k\pi/2)}{k\pi/2}=\frac{sinc(k/2)}{2}\)

\[sinc(t)=\frac{sin(\pi t)}{\pi t}\]

# 周期方波频谱c_k=1/2 * sinc(k/2)x_t = np.sort((list(np.arange(-7,10,2))*2))
y_t = [1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0]
plt.subplot(2,1,1)
plt.plot(x_t,y_t)
plt.xticks([-4,-2,0,1,2,4],['$T_0$','$-T_0/2$','0','$T_0/4$','$T_0/2$','$T_0$'])
plt.yticks([0,1],['0','1'])
plt.title('Periodic Square')plt.subplot(2,1,2)
x_f = np.arange(-8,9,1)
y_f = np.sinc(x_f/2)/2 # spectrum
plt.stem(x_f,y_f,use_line_collection=True)
plt.title('Corresponding_Spectrum')
plt.tight_layout()
plt.show()

周期矩形波信号的傅里叶级数\(c_k=\frac{1}{4}{sinc(\frac{k}{4})}\)

# 周期矩形波频谱
plt.subplot(2,1,1)
x = np.arange(-9,11,2)
y_t = [1,1,0,0,0,1,0,0,0,1]
plt.plot(x,y_t,drawstyle='steps-pre')
plt.title('Rectangular Wave')plt.subplot(2,1,2)
x_f = np.arange(-16,17,1)
y_f = np.sinc(x_f/4)/4
plt.stem(x_f,y_f,use_line_collection=True)
plt.title('Rectangular Wave Spectrum')
plt.ylim([-0.1,0.3])
plt.tight_layout()
plt.show()

方波的k=2,4,6分别与矩形波k=4,8,12对齐

k=0对应直流分量,k=1对应基波分量,k=2对应二次谐波

基波频率\(f=1/T_0\), 方波周期使\(T_0\), 矩形波周期是\(2T_0\), 因此同一个k,方波频率是矩形波两倍

即方波的k对应矩形波的2k

因此横轴可理解成频率f或者角频率w

x_f = np.arange(-128,129,1)
y_f = np.sinc(x_f/32)/32
plt.stem(x_f,y_f,use_line_collection=True)
# plt.title('Rectangular Wave Spectrum')
plt.ylim([-0.03,0.05])
plt.tight_layout()
plt.show() 

离散谱推广到连续谱

连载67:

当 \(T \rightarrow \infty\), 周期矩形信号将变成非周期矩形信号,谱线间隔将逐渐减小,傅里叶系数将趋近无穷多,频谱幅值也将逐渐减小趋至0

离散谱是线频谱,横轴单位间隔代表基波频率间隔,纵轴代表其复傅里叶系数\(c_k\)

连续谱又称密度频谱,代表单位带宽下的频谱。横轴单位间隔代表基波频率间隔,纵轴代表频谱密度\({c_k}/{\Delta f}\)

# 连载69:周期矩形波离散谱与连续谱比较
# plt.suptitle('Left:Discrete Spectrum; Right:Continuoous Spectrum')plt.subplot(3,2,2)
x = np.arange(-8,9,1)
y_t = [0,-0.05,0,0.05,0,-0.1,0,0.3,0.5,0.3,0,-0.1,0,0.05,0,-0.05,-0.05]
plt.plot(x,y_t,drawstyle='steps-post',color='r')
# plt.subplots_adjust(hspace=10)
plt.title('Square Wave Contiuous Spectrum',fontsize=8)
y_f = np.sinc(x/2)/2 # spectrum
plt.plot(x,y_f,color='b')plt.subplot(3,2,1)
x_f = np.arange(-8,9,1)
y_f = np.sinc(x_f/2)/2 # spectrum
plt.stem(x_f,y_f,use_line_collection=True)
plt.title('Square Wave Discrete Spectrum',fontsize=8)
# plt.subplots_adjust(hspace=10)plt.subplot(3,2,4)
x = np.arange(-16,17,1)
# y_t = [0,-0.05,0,0.05,0,-0.1,0,0.3,0.5,0.3,0,-0.1,0,0.05,0,-0.05,-0.05]
y_f = np.sinc(x/4)/2 # spectrum
plt.plot(x,y_f,drawstyle='steps-post',color='r')
plt.title('Duty-Cycle-25 Rectangular Wave',fontsize=8)
plt.plot(x,y_f,color='b')plt.subplot(3,2,3)
x_f = np.arange(-16,17,1)
y_f = np.sinc(x_f/4)/4 # spectrum
plt.stem(x_f,y_f,use_line_collection=True)
plt.title('Duty-Cycle-25 Rectangular Wave',fontsize=8)plt.subplot(3,2,6)
x = np.arange(-32,33,1)
# y_t = [0,-0.05,0,0.05,0,-0.1,0,0.3,0.5,0.3,0,-0.1,0,0.05,0,-0.05,-0.05]
y_f = np.sinc(x/8)/2 # spectrum
plt.plot(x,y_f,drawstyle='steps-post',color='r')
plt.title('Duty-Cycle-12.5 Rectangular Wave',fontsize=8)
plt.plot(x,y_f,color='b')plt.subplot(3,2,5)
x_f = np.arange(-32,33,1)
y_f = np.sinc(x_f/8)/8 # spectrum
plt.stem(x_f,y_f,use_line_collection=True)
plt.title('Duty-Cycle-12.5 Rectangular Wave',fontsize=8)plt.tight_layout()
plt.show()

随着周期T增大,离散谱(左图)谱线间隔减小且谱线幅度渐小

随着周期T增大,连续谱阶梯宽度渐窄,但幅度未变小,其逼近\(X(f)=\frac{T_0}{2}sinc(\frac{T_0}{2}f)\)

令\(\tau=\frac{T_0}{2}\), 则 \(X(f)=\tau sinc(\tau f)\)

由周期矩形信号推广到一般情况(Fourier Transform):\(X(f)=\int_{-\infty}^{+\infty}x(t)e^{-j2\pi ft}dt\)

由于部分图片显示不出,故贴上Github地址备用

各种有用的频谱指标

转载于:https://www.cnblogs.com/WindyZ/articles/ComminicationTheroy41_70.html

深入浅出通信原理连载41-70(Python代码版)相关推荐

  1. python 通信系统仿真_深入浅出通信原理连载22-40(Python代码版)

    深入浅出通信原理Python代码版 深入浅出通信原理是陈爱军的心血之作,于通信人家园连载,此处仅作python代码笔记训练所用 陈老师的连载从多项式乘法讲起,一步一步引出卷积.傅立叶级数展开.旋转向量 ...

  2. 深入浅出通信原理连载1-21(Python代码版)

    目录 深入浅出通信原理Python代码版 连载1:从多项式乘法说起 连载2:卷积的表达式 连载3: Python计算卷积 连载4:将信号表示成多项式的形式 连载5:欧拉公式证明 理解复数 连载6:利用 ...

  3. python频域三维图_深入浅出通信原理连载1-21(Python代码版)

    深入浅出通信原理Python代码版 深入浅出通信原理是陈爱军的心血之作,于通信人家园连载,此处仅作python代码笔记训练所用 陈老师的连载从多项式乘法讲起,一步一步引出卷积.傅立叶级数展开.旋转向量 ...

  4. 深入浅出通信原理(Python代码版)

    深入浅出通信原理Python代码版 深入浅出通信原理是陈爱军的心血之作,于通信人家园连载,此处仅作python代码笔记训练所用 陈老师的连载从多项式乘法讲起,一步一步引出卷积.傅立叶级数展开.旋转向量 ...

  5. ++代码实现 感知机的原理_决策树ID3原理及R语言python代码实现(西瓜书)

    决策树ID3原理及R语言python代码实现(西瓜书) 摘要: 决策树是机器学习中一种非常常见的分类与回归方法,可以认为是if-else结构的规则.分类决策树是由节点和有向边组成的树形结构,节点表示特 ...

  6. 深入浅出通信原理2021-03-03

    系列文章目录 第一章 深入浅出通信原理之卷积 第二章 深入浅出通信原理之傅里叶变换 文章目录 系列文章目录 傅里叶变换 一.信号的傅里叶级数展开 二.时域信号相乘相当于频域卷积 三.用余弦信号合成方波 ...

  7. 深入浅出通信原理2021-03-07

    系列文章目录 第一章 深入浅出通信原理之卷积 第二章 深入浅出通信原理之傅里叶变换 第三章 深入浅出通信原理之复指数信号 文章目录 系列文章目录 复指数信号 一.复指数信号的物理意义 二.余弦信号和正 ...

  8. 《深入浅出通信原理》参考资料

    陈爱军老师神贴--深入浅出通信原理 原址 我在编写<深入浅出通信原理>时查阅过的一些书籍及资料. 其中有一些是回帖的同学推荐给我的书,买了之后一看,确实很不错,欢迎大家继续推荐. 后续我会 ...

  9. 视频教程-深度学习原理详解及Python代码实现-深度学习

    深度学习原理详解及Python代码实现 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多项 白勇 ¥88.0 ...

最新文章

  1. Keras ImageDataGenerator用于数据扩充/增强的原理及方法
  2. 走进学习生活中的小圈子,成为与众不同的人,从现在开始!
  3. PySide2安装出现Could not find a version that satisfies和No matching distribution found for
  4. JQuery-UI组件化开发
  5. 腾讯荣获OSCAR尖峰开源企业奖 参与国内首个开源治理白皮书编写
  6. Java 8 - Interface Default Method接口默认方法
  7. C语言正函数nosign,C语言标准库函数查询手册.docx
  8. 支持向量机(Support Vector Machines,SVM)
  9. 机器学习:理解逻辑回归及二分类、多分类代码实践
  10. android反编译工具mercury_JAVA反编译工具集锦
  11. 我说CMMI2.0之技术解决方案
  12. 基金销售系统和TA系统
  13. 日剧·日综资源集合(建议收藏)
  14. 微机原理与接口技术考点一文全(待更)
  15. 流氓又见流氓!-有感雅虎中国通过公证部门 证明雅虎助手非恶意软件
  16. 千字文(粱敕员外散骑侍郎周兴嗣撰)
  17. android号牌号码识别新能源,Android离线版车牌号识别相关问题
  18. Playbook特殊用法
  19. TI毫米波雷达开发中软件版本的说明
  20. 大数据Spark Continuous Processing

热门文章

  1. 2021年这些高频面试知识点最后再发一次,大厂面经合集
  2. 目前还存活的多个电驴下载站点!电驴达人收藏
  3. [小项目]手把手教你C语言哈夫曼压缩/解压缩
  4. 数据结构和非数据结构详解
  5. ros接入IMU数据,打包发布topic
  6. 南昌理工学院计算机应用怎么样,南昌理工学院计算机系哪个专业最好
  7. 告别ide 之UEdit32的Java环境配置
  8. 【Spring Cloud】 Gateway网关 之 那些好玩的网关过滤器
  9. 【毕业设计】基于PID控制的智能平衡车 - stm32 物联网 单片机 超详细
  10. VIVO(维沃)2021年芯片设计工程师笔试题+解析