📜  正交相移键控(1)

📅  最后修改于: 2023-12-03 14:55:53.720000             🧑  作者: Mango

正交相移键控(Quadrature Phase Shift Keying)

正交相移键控(Quadrature Phase Shift Keying,QPSK)是数字通信中频移键控(FSK)的改进版本,它允许在单位时间内传输更多的比特数,同时保持相同的带宽。正交相移键控是最常见的相移键控(PSK)方案之一。

原理

正交相移键控使用两个正弦波信号,分别称为正弦(I)和余弦(Q)信号,用于表示比特流中每个比特的值。它使用恒定的幅度,但是改变不同的位相(相位角)。每个输入比特集合可以由一个离散值集合(离散相位)表示,这些值可以视为相位角的离散样本。

同样,QPSK可以视为一种类型的调制,其中发送方同时调制两个正交载波,分别称为I和Q。这样做可以在单位带宽内传输比较多的比特,因为每个载波可以携带多个比特。

示例代码

以下是使用Python生成QPSK信号的示例代码。

import numpy as np

M = 4  # QPSK模式4
n = np.arange(0, 100)  # 生成100个符号

# 生成随机位流
bits = np.random.randint(0, M, len(n))

# 符号映射
mapping = {
    0: (1 + 1j) / np.sqrt(2),
    1: (-1 + 1j) / np.sqrt(2),
    2: (-1 - 1j) / np.sqrt(2),
    3: (1 - 1j) / np.sqrt(2),
}

# 复数映射
symbols = np.array([mapping[b] for b in bits])

# 生成QPSK信号
signal = np.real(symbols * np.exp(1j * np.pi / 4))

# 画图
import matplotlib.pyplot as plt

plt.plot(signal)
plt.title('QPSK Signal')
plt.show()

以上代码利用Python的NumPy库实现了QPSK调制的信号生成,并且用Matplotlib可视化了生成的信号。