射频和无线供应商和资源的家

一站式满足您的射频和无线需求

BPSK QPSK 16QAM 64QAM调制python脚本代码

本页涵盖BPSK, QPSK, 16QAM和64QAM调制python代码脚本。

简介: QPSK、16QAM和64QAM等数字调制技术通过在单个载波上映射多个位来实现带宽效率。BPSK是用于远程通信和导频子载波映射的最鲁棒的调制技术。

数据映射或调制Python脚本

下面的python代码可以用来映射数字二进制数据根据不同的调制星座点,如BPSK, QPSK, 16QAM和64QAM

#二进制数据生成器(1's和0's根据用户定义的长度)
进口随机
将numpy导入为np
进口numpy
进口matplotlib。Pyplot作为PLT
# Python代码生成二进制数据流
Input_data = ""
Len1 = 1000 #输入数据的长度
对于范围(len1)中的I:
Temp1 = str(随机的。randint (0,1))
Input_data += temp1
打印(input_data)
Input_data1 = [int(i) for i in input_data] #将字符串转换为列表
打印(input_data1)
#设置参数,如调制类型,每载波比特数(nc)和norm_factor
modulation_type = int("输入调制类型(0:BPSK, 1: QPSK, 2:16QAM, 3: 64QAM: "))
打印(modulation_type)
Norm_factor = [1.0, 0.7071, 0.3162, 0.1543]
Nc = [1,2,4,6]
K = norm_factor[modulation_type]
打印(k)
Mode = nc[modulation_type]
print(模式)
M0 = []
匹配模式:
案例1:
M0 = np。阵列([1])
i = len(M0)
B = np. 0 (i)
对于M0中的i:
M0 = numpy。乘(M0, k)
plt.plot (M0。真实的,M0。图像放大,“g *”)
plt。标题(“图1:BPSK星座”)
plt.show ()
案例2:
M0 = np.array([1.]+ 1. j,-1. + 1.j, 1. - 1.j, -1. - 1.j])
i = len(M0)
B = np. 0 (i)
对于M0中的i:
N0 = numpy。乘(M0, k)
plt.plot (M0。真实的,M0。图像放大,“g *”)
plt。标题(“图2:QPSK星座”)
plt.show ()
案例4:
M0 = np.array([1.]+ 1. j,1. + 3.j, 1. - 1.j, 1. - 3.j, 3. + 1.j, 3. + 3.j,
3.- 1。j, 3。- 3。j, 1。+ 1. j,-1. + 3.j, -1. - 1.j, -1. - 3.j, -3. + 1.j,
3所示。+ 3. j,3所示。- 1。j, 3。- 3. j])
i = len(M0)
B = np. 0 (i)
对于M0中的i:
M0 = numpy。乘(M0, k)
plt.plot (M0。真实的,M0。图像放大,“g *”)
plt。标题(“图3:16QAM星座”)
plt.show ()
例6:
M0 = np。数组([3 + 3j, 3 + 1j, 3 + 5j, 3 + 7j, 3 - 3j, 3 - 1j, 3 - 5j,
3 - 7j, 1 + 3j, 1 + 1j, 1 + 5j, 1 + 7j, 1 - 3j, 1 - 1j, 1 - 5j, 1 - 7j,
5 + 3j, 5 + 1j, 5 + 5j, 5 + 7j, 5 - 3j, 5 - 1j, 5 - 5j, 5 - 7j, 7 + 3j,
7 + 1j, 7 + 5j, 7 + 7j, 7 - 3j, 7 - 1j, 7 - 5j, 7 - 7j, -3 + 3j, 3 + 1j,
3 + 5 j, 3 + 7 j, 3 - 3 j, 3 - 1, 3 - 5 j, 3 - 7 j, 1 + 3 j, 1 + 1 j,
1 + 5 j, 1 + 7 j, 1 - 3 j, 1 - 1 j, 1 - 5 j, 1 - 7 j, 5 + 3 j, 5 + 1 j,
5 + 5 j, 5 + 7 j, 5 - 3 j, 5 - 1 j, 5 - 5 j, 5 - 7 j, 7 + 3 j, 7 + 1 j,
7 + 5 j, 7 + 7 j, 7 - 3 j, 7 - 1 j, 7 - 5 j, 7 - 7 j])
i = len(M0)
B = np. 0 (i)
对于M0中的i:
M0 = numpy。乘(M0, k)
plt.plot (M0。真实的,M0。图像放大,“g *”)
plt。标题(“图4:64QAM星座”)
plt.show ()
#检查数据长度以在需要时在末尾添加填充0
余数= len1%模式
打印(剩余部分)
如果余数!= 0:
余数=模式余数
Input_data1 = np。Pad (input_data1,(0,余数))
Len1 = len(input_data1)
Len2 = int(len1/mode)
Input_data_r = np。(input_data1, (len2, mode)
打印(input_data_r)

S1 = input_data
S2 = []
chunk = [s1[i:i+mode] for i in range(0, len(s1), mode)]
对于piece in chunks:
Temp = int(piece, 2)
打印(临时、件)
s2.append(临时)

Map_out = []
对于s2中的值:
map_out.append (M0(值))
打印(M0(值))

输入(用户界面)

输入调制类型(0:BPSK, 1: QPSK, 2:16QAM, 3:64 qam:)

BPSK、QPSK、16QAM和64QAM映射的输出图

中提供的输入,以下是各种调制类型的输出图python命令提示符。

BPSK蟒星座图


Python BPSK调制星座

QPSK python星座图


Python QPSK调制星座

16QAM巨蟒星座图


Python 16QAM调制星座

64QAM巨蟒星座图


Python 64QAM星座调制

Python中其他有用的DSP代码

MATLAB代码的有用链接

射频和无线教程


分享本页

翻译本页
Baidu