【信号处理】python按原理实现BPSK、QPSK、QAM信号调制
完整的使用不涉及原理的包的使用请转到我的另一篇文章
【信号处理】Python实现2PSK、QPSK、8PSK、N-QAM的调制和解调
1 BPSK调制
# -*- coding:utf-8 -*-import numpy as np
from math import pi
import matplotlib.pyplot as plt
import matplotlib
import math#码元数size = 10
sampling_t = 0.01
t = np.arange(0, size, sampling_t)# 随机生成信号序列
a = np.random.randint(0, 2, size)
m = np.zeros(len(t), dtype=np.float32)
for i in range(len(t)):m[i] = a[math.floor(t[i])]
fig = plt.figure()
ax1 = fig.add_subplot(2, 1, 1)ax1.set_title('generate Random Binary signal', fontsize = 20)
plt.axis([0, size, -0.5, 1.5])
plt.plot(t, m, 'b')fc = 4000
fs = 20 * fc # 采样频率
ts = np.arange(0, (100 * size) / fs, 1 / fs)
coherent_carrier = np.cos(np.dot(2 * pi * fc, ts))bpsk = np.cos(np.dot(2 * pi * fc, ts) + pi * (m - 1) + pi / 4)# BPSK调制信号波形
ax2 = fig.add_subplot(2, 1, 2)
ax2.set_title('BPSK Modulation', fontsize=20)#, fontproperties=zhfont1
plt.axis([0,size,-1.5, 1.5])
plt.plot(t, bpsk, 'r')
plt.show()
print()
2 QPSK
from scipy import signal, special
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
from matplotlib.font_manager import FontPropertiest = np.arange(0,8.5,0.5)
# input
plt.subplot(4,1,1)
y1 = [0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0]
plt.plot(t,y1,drawstyle='steps-post')
plt.xlim(0,8)
plt.ylim(-0.5,1.5)
plt.title('Input Signal')# I Signal
plt.subplot(4,1,2)
a = 1/np.sqrt(2)
tI = np.arange(0,9,1)
yI = [-a,a,-a,a,-a,a,-a,a,a]
plt.plot(tI,yI,drawstyle='steps-post')
plt.xlim(0,8)
plt.ylim(-2,2)
plt.title('I signal')# Q signal
plt.subplot(4,1,3)
yQ = [a,-a,-a,a,a,-a,-a,a,a]
plt.plot(tI,yQ,drawstyle='steps-post')
plt.xlim(0,8)
plt.ylim(-1,1)
plt.title('Q Signal')# QPSK signal
plt.subplot(4,1,4)
t = np.arange(0,9.,0.01)
def outputwave(I,Q,t):rectwav = []for i in range(len(I)):t_tmp = t[((i)*100):((i+1)*100)]yI_tmp = yI[i]*np.ones(100)yQ_tmp = yQ[i]*np.ones(100)wav_tmp = yI_tmp*np.cos(2*np.pi*5*t_tmp)-yQ_tmp*np.sin(2*np.pi*5*t_tmp)rectwav.append(wav_tmp)return rectwav
rectwav = outputwave(yI,yQ,t)
plt.plot(t,np.array(rectwav).flatten(),'r')
plt.xlim(0,8)
plt.ylim(-2,2)
plt.title('QPSK Signal')plt.tight_layout()
plt.show()
3 QAM
4 参考资料
- python实现BPSK调制信号解调
- 深入浅出通信原理Python代码版
- Python实现M-QAM
【信号处理】python按原理实现BPSK、QPSK、QAM信号调制相关推荐
- 数字调制BPSK/QPSK/QAM/ASK/FSK/PSK
文章目录 BPSK QPSK BPSK&QPSK比较 QAM 16-QAM vs 64-QAM vs 256-QAM 512 QAM vs 1024 QAM vs 2048 QAM vs 40 ...
- 通信原理与MATLAB(十一):QAM的调制解调
目录 1.QAM的调制原理 2.QAM的解调原理 3.QAM代码 4.结果图 5.特点 1.QAM的调制原理 QAM调制原理如下图所示,基带码元波形经过串并转换分成I.Q两路,然后再经过电平转换(00 ...
- 信号处理之频谱原理与python实现
目录 频谱分析 FFT频谱分析原理 下面就用python案例进行说明 案例1 案例2 短时傅里叶变换STFT 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区.QQ交流群:941473018 ...
- BPSK,QPSK,2FSK,16QAM,64QAM信号在高斯信道与瑞利信道下的误码率性能仿真
BPSK,QPSK,2FSK,16QAM,64QAM信号在高斯信道与瑞利信道下的误码率性能仿真_南大小王-CSDN博客 16QAM调制解调仿真(matlab,详细介绍仿真方案的设计.结果及结论.完整代 ...
- 基于MATLAB的自适应调制解调通信系统的误码率仿真,对比BPSK,QPSK,16QAM,64QAM
目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...
- python array赋值_从踩坑学Python内部原理(5):执行时机的差异
(给Python开发者加星标,提升Python技能) 英文:Satwik Kansal,翻译:暮晨 Python开发者整理自 GitHub [导读]:Python 是一个设计优美的解释型高级语言,它提 ...
- python爬虫原理-python学习之python爬虫原理
原标题:python学习之python爬虫原理 今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的 ...
- python爬虫原理-python爬虫原理详细讲解
原标题:python爬虫原理详细讲解 一 .爬虫是什么 1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. 2.互联网建立的目的?互联网的 ...
- python epoll 并发_Python语言之python并发原理(阻塞、非阻塞、epoll)
本文主要向大家介绍了Python语言之python并发原理(阻塞.非阻塞.epoll),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在Linux系统中 01 阻塞服务端 特征: ...
最新文章
- ML基石_12_NonLinearTransformation
- 苹果汽车高管几乎流失殆尽,一年损失7人,新年又有人被Meta挖走
- [android] Serializable 和 Parcelable 区别
- 算符“.*”和“-*”,用于“成员指针”
- 一个毕业生对大学爱情和奋斗的思考!
- 程序集、应用程序配置及App.config和YourSoft.exe.config .
- 高德地图看各省分界线_深度解读|高德宣布高精地图“百元时代”背后的商业逻辑是什么...
- FastReport的动态页面设置
- 希尔排序的详细过程_算法系列: 10大常见排序算法(4)希尔排序
- python怎么实现黑客攻击英国_注意!你的隐私就是这样被黑客获取的
- 【正则表达式系列】零宽断言
- 创建多个设备文件节点_使用DEVICE_ATTR实例分析
- 使用GDB调试Android NDK native(C/C++)程序-转
- 异步消息的性能与激情之Netty开发思路
- 获取系统当前时间(精确到毫秒)
- 说下我自己对空号检测的理解跟心得
- 《Java从入门到放弃》JavaSE入门篇:面向对象概念(入门版)
- dev c++源文件未编译
- Kali对网站进行DDOS攻击
- 初探arcgis的python脚本的使用 (三)
热门文章
- 观点丨区块链未来这一年
- [持续更新]大数据岗位实习日志
- 分布式训练 - 多机多卡 (DDP)
- 普通人如何应对经济危机
- Oracle数据库导入导出emp文件
- 美国Disqus、国内JiaThis、友言、评论啦、搜狐畅言 评论系统(第三方评论系统)
- 国外经典幽默漫画和笑话集
- html下拉框动态增加成员,JavaScript实现左右下拉框动态增删示例
- 速卖通关键词挖掘工具_6款外贸高手都在用的关键词挖掘工具
- Facebook在美上线相亲功能,微软AI成为麻将冠军!...|一周热闻回顾