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(值))
进口随机
将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蟒星座图
QPSK python星座图
16QAM巨蟒星座图
64QAM巨蟒星座图
Python中其他有用的DSP代码
相关python脚本
Python编程教程
Convolution python脚本
BPSK QPSK 16QAM 64QAM调制
16点FFT代码
OFDM发射机仿真代码
瑞利衰落信道
瑞尔斯衰落信道
ASK调制python代码
FSK调制python代码
PSK调制python代码
MATLAB代码的有用链接
OFDM前导信号的产生
时间偏差估计
频率估计
信道估计
11a WLAN信道
PN序列生成
OFDMA Tx Rx
AES DES
载波聚合
CCDF
冷杉过滤器
IIR滤波器
低通FIR
维特比译码器
CRC8 CRC32