完整的使用不涉及原理的包的使用请转到我的另一篇文章

【信号处理】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 参考资料

  1. python实现BPSK调制信号解调
  2. 深入浅出通信原理Python代码版
  3. Python实现M-QAM

【信号处理】python按原理实现BPSK、QPSK、QAM信号调制相关推荐

  1. 数字调制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 ...

  2. 通信原理与MATLAB(十一):QAM的调制解调

    目录 1.QAM的调制原理 2.QAM的解调原理 3.QAM代码 4.结果图 5.特点 1.QAM的调制原理 QAM调制原理如下图所示,基带码元波形经过串并转换分成I.Q两路,然后再经过电平转换(00 ...

  3. 信号处理之频谱原理与python实现

    目录 频谱分析 FFT频谱分析原理 下面就用python案例进行说明 案例1 案例2 短时傅里叶变换STFT 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区.QQ交流群:941473018 ...

  4. BPSK,QPSK,2FSK,16QAM,64QAM信号在高斯信道与瑞利信道下的误码率性能仿真

    BPSK,QPSK,2FSK,16QAM,64QAM信号在高斯信道与瑞利信道下的误码率性能仿真_南大小王-CSDN博客 16QAM调制解调仿真(matlab,详细介绍仿真方案的设计.结果及结论.完整代 ...

  5. 基于MATLAB的自适应调制解调通信系统的误码率仿真,对比BPSK,QPSK,16QAM,64QAM

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  6. python array赋值_从踩坑学Python内部原理(5):执行时机的差异

    (给Python开发者加星标,提升Python技能) 英文:Satwik Kansal,翻译:暮晨 Python开发者整理自 GitHub [导读]:Python 是一个设计优美的解释型高级语言,它提 ...

  7. python爬虫原理-python学习之python爬虫原理

    原标题:python学习之python爬虫原理 今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的 ...

  8. python爬虫原理-python爬虫原理详细讲解

    原标题:python爬虫原理详细讲解 一 .爬虫是什么 1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. 2.互联网建立的目的?互联网的 ...

  9. python epoll 并发_Python语言之python并发原理(阻塞、非阻塞、epoll)

    本文主要向大家介绍了Python语言之python并发原理(阻塞.非阻塞.epoll),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在Linux系统中 01 阻塞服务端 特征: ...

最新文章

  1. ML基石_12_NonLinearTransformation
  2. 苹果汽车高管几乎流失殆尽,一年损失7人,新年又有人被Meta挖走
  3. [android] Serializable 和 Parcelable 区别
  4. 算符“.*”和“-*”,用于“成员指针”
  5. 一个毕业生对大学爱情和奋斗的思考!
  6. 程序集、应用程序配置及App.config和YourSoft.exe.config .
  7. 高德地图看各省分界线_深度解读|高德宣布高精地图“百元时代”背后的商业逻辑是什么...
  8. FastReport的动态页面设置
  9. 希尔排序的详细过程_算法系列: 10大常见排序算法(4)希尔排序
  10. python怎么实现黑客攻击英国_注意!你的隐私就是这样被黑客获取的
  11. 【正则表达式系列】零宽断言
  12. 创建多个设备文件节点_使用DEVICE_ATTR实例分析
  13. 使用GDB调试Android NDK native(C/C++)程序-转
  14. 异步消息的性能与激情之Netty开发思路
  15. 获取系统当前时间(精确到毫秒)
  16. 说下我自己对空号检测的理解跟心得
  17. 《Java从入门到放弃》JavaSE入门篇:面向对象概念(入门版)
  18. dev c++源文件未编译
  19. Kali对网站进行DDOS攻击
  20. 初探arcgis的python脚本的使用 (三)

热门文章

  1. 观点丨区块链未来这一年
  2. [持续更新]大数据岗位实习日志
  3. 分布式训练 - 多机多卡 (DDP)
  4. 普通人如何应对经济危机
  5. Oracle数据库导入导出emp文件
  6. 美国Disqus、国内JiaThis、友言、评论啦、搜狐畅言 评论系统(第三方评论系统)
  7. 国外经典幽默漫画和笑话集
  8. html下拉框动态增加成员,JavaScript实现左右下拉框动态增删示例
  9. 速卖通关键词挖掘工具_6款外贸高手都在用的关键词挖掘工具
  10. Facebook在美上线相亲功能,微软AI成为麻将冠军!...|一周热闻回顾