无线通信基础:调制与解调技术_13.调制解调器的工作原理

无线通信基础:调制与解调技术_13.调制解调器的工作原理

13. 调制解调器的工作原理

在无线通信系统中,调制解调器(Modem,Modulator-Demodulator)是实现信息传输的关键设备。调制解调器的主要功能是将基带信号(Baseband Signal)调制到载波信号(Carrier Signal)上,以便通过无线信道进行传输,同时在接收端将接收到的已调信号解调回基带信号。本节将详细介绍调制解调器的工作原理,包括调制和解调的基本概念、常见的调制解调技术以及其在无线通信中的应用。

13.1 调制的基本概念

调制是指将信息信号(通常称为基带信号)加载到载波信号上的过程。基带信号通常是低频的数字或模拟信号,而载波信号是高频的正弦波信号。通过调制,基带信号的频谱被搬移到载波信号的频带上,从而使得信号更易于在无线信道中传输。

13.1.1 基带信号与载波信号

基带信号:基带信号是指未经调制的原始信息信号,通常包括数字信号和模拟信号。数字信号可以是二进制序列,例如 101101,而模拟信号可以是连续变化的电压信号。载波信号:载波信号是一种高频的正弦波信号,通常表示为 Accos⁡(2πfct+ϕ)A_c \cos(2\pi f_c t + \phi)Ac​cos(2πfc​t+ϕ),其中 AcA_cAc​ 是载波的幅度,fcf_cfc​ 是载波的频率,ttt 是时间,ϕ\phiϕ 是载波的初始相位。

13.1.2 调制的分类

调制技术可以根据调制信号的类型和调制参数的不同进行分类:

模拟调制:基带信号为模拟信号,常见的模拟调制技术有AM(幅度调制)、FM(频率调制)和PM(相位调制)。数字调制:基带信号为数字信号,常见的数字调制技术有ASK(幅度键控)、FSK(频移键控)、PSK(相移键控)和QAM(正交幅度调制)。

13.2 调制技术

13.2.1 模拟调制技术

13.2.1.1 幅度调制(AM)

幅度调制是将基带信号的幅度变化加载到载波信号的幅度上的调制方法。AM调制的数学表达式为:

s(t)=(Ac+m(t))cos⁡(2πfct+ϕ) s(t) = (A_c + m(t)) \cos(2\pi f_c t + \phi) s(t)=(Ac​+m(t))cos(2πfc​t+ϕ)

其中,m(t)m(t)m(t) 是基带信号,AcA_cAc​ 是载波信号的幅度,fcf_cfc​ 是载波信号的频率,ϕ\phiϕ 是载波信号的初始相位。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.sin(2 * np.pi * 2 * t) # 基带信号,频率为2Hz

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

phi = 0 # 载波相位

# AM调制

s_t = (A_c + m_t) * np.cos(2 * np.pi * f_c * t + phi)

# 绘制基带信号和已调信号

plt.figure(figsize=(12, 6))

plt.subplot(2, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(2, 1, 2)

plt.plot(t, s_t)

plt.title('AM调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.2.1.2 频率调制(FM)

频率调制是将基带信号的频率变化加载到载波信号的频率上的调制方法。FM调制的数学表达式为:

s(t)=Accos⁡(2πfct+2πkf∫m(t)dt+ϕ) s(t) = A_c \cos(2\pi f_c t + 2\pi k_f \int m(t) dt + \phi) s(t)=Ac​cos(2πfc​t+2πkf​∫m(t)dt+ϕ)

其中,kfk_fkf​ 是调制指数,表示基带信号对载波频率的影响程度。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.sin(2 * np.pi * 2 * t) # 基带信号,频率为2Hz

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

phi = 0 # 载波相位

k_f = 10 # 调制指数

# FM调制

integral_m_t = np.cumsum(m_t) * (t[1] - t[0]) # 基带信号的积分

s_t = A_c * np.cos(2 * np.pi * f_c * t + 2 * np.pi * k_f * integral_m_t + phi)

# 绘制基带信号和已调信号

plt.figure(figsize=(12, 6))

plt.subplot(2, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(2, 1, 2)

plt.plot(t, s_t)

plt.title('FM调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.2.1.3 相位调制(PM)

相位调制是将基带信号的相位变化加载到载波信号的相位上的调制方法。PM调制的数学表达式为:

s(t)=Accos⁡(2πfct+kpm(t)+ϕ) s(t) = A_c \cos(2\pi f_c t + k_p m(t) + \phi) s(t)=Ac​cos(2πfc​t+kp​m(t)+ϕ)

其中,kpk_pkp​ 是调制指数,表示基带信号对载波相位的影响程度。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.sin(2 * np.pi * 2 * t) # 基带信号,频率为2Hz

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

phi = 0 # 载波相位

k_p = 10 # 调制指数

# PM调制

s_t = A_c * np.cos(2 * np.pi * f_c * t + k_p * m_t + phi)

# 绘制基带信号和已调信号

plt.figure(figsize=(12, 6))

plt.subplot(2, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(2, 1, 2)

plt.plot(t, s_t)

plt.title('PM调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.2.2 数字调制技术

13.2.2.1 幅度键控(ASK)

幅度键控是通过改变载波信号的幅度来表示数字信息的一种调制方法。ASK调制的数学表达式为:

s(t)=Acm(t)cos⁡(2πfct+ϕ) s(t) = A_c m(t) \cos(2\pi f_c t + \phi) s(t)=Ac​m(t)cos(2πfc​t+ϕ)

其中,m(t)m(t)m(t) 是基带信号,通常取值为0或1。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.array([1 if 0.2 < i < 0.4 or 0.6 < i < 0.8 else 0 for i in t]) # 基带信号,0或1

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

phi = 0 # 载波相位

# ASK调制

s_t = A_c * m_t * np.cos(2 * np.pi * f_c * t + phi)

# 绘制基带信号和已调信号

plt.figure(figsize=(12, 6))

plt.subplot(2, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(2, 1, 2)

plt.plot(t, s_t)

plt.title('ASK调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.2.2.2 频移键控(FSK)

频移键控是通过改变载波信号的频率来表示数字信息的一种调制方法。FSK调制的数学表达式为:

s(t)={Accos⁡(2πf1t+ϕ)if m(t)=1Accos⁡(2πf2t+ϕ)if m(t)=0 s(t) =

\begin{cases}

A_c \cos(2\pi f_1 t + \phi) & \text{if } m(t) = 1 \\

A_c \cos(2\pi f_2 t + \phi) & \text{if } m(t) = 0

\end{cases} s(t)={Ac​cos(2πf1​t+ϕ)Ac​cos(2πf2​t+ϕ)​if m(t)=1if m(t)=0​

其中,f1f_1f1​ 和 f2f_2f2​ 是两个不同的载波频率。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.array([1 if 0.2 < i < 0.4 or 0.6 < i < 0.8 else 0 for i in t]) # 基带信号,0或1

# 定义载波信号

A_c = 1 # 载波幅度

f_1 = 50 # 载波频率1,50Hz

f_2 = 70 # 载波频率2,70Hz

phi = 0 # 载波相位

# FSK调制

s_t = np.where(m_t == 1, A_c * np.cos(2 * np.pi * f_1 * t + phi), A_c * np.cos(2 * np.pi * f_2 * t + phi))

# 绘制基带信号和已调信号

plt.figure(figsize=(12, 6))

plt.subplot(2, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(2, 1, 2)

plt.plot(t, s_t)

plt.title('FSK调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.2.2.3 相移键控(PSK)

相移键控是通过改变载波信号的相位来表示数字信息的一种调制方法。PSK调制的数学表达式为:

s(t)={Accos⁡(2πfct+ϕ1)if m(t)=1Accos⁡(2πfct+ϕ2)if m(t)=0 s(t) =

\begin{cases}

A_c \cos(2\pi f_c t + \phi_1) & \text{if } m(t) = 1 \\

A_c \cos(2\pi f_c t + \phi_2) & \text{if } m(t) = 0

\end{cases} s(t)={Ac​cos(2πfc​t+ϕ1​)Ac​cos(2πfc​t+ϕ2​)​if m(t)=1if m(t)=0​

其中,ϕ1\phi_1ϕ1​ 和 ϕ2\phi_2ϕ2​ 是两个不同的载波相位。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.array([1 if 0.2 < i < 0.4 or 0.6 < i < 0.8 else 0 for i in t]) # 基带信号,0或1

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

phi_1 = 0 # 相位1

phi_2 = np.pi # 相位2

# PSK调制

s_t = np.where(m_t == 1, A_c * np.cos(2 * np.pi * f_c * t + phi_1), A_c * np.cos(2 * np.pi * f_c * t + phi_2))

# 绘制基带信号和已调信号

plt.figure(figsize=(12, 6))

plt.subplot(2, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(2, 1, 2)

plt.plot(t, s_t)

plt.title('PSK调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.2.2.4 正交幅度调制(QAM)

正交幅度调制是通过同时改变载波信号的幅度和相位来表示数字信息的一种调制方法。QAM调制的数学表达式为:

s(t)=Ac(I(t)cos⁡(2πfct)+Q(t)sin⁡(2πfct)) s(t) = A_c (I(t) \cos(2\pi f_c t) + Q(t) \sin(2\pi f_c t)) s(t)=Ac​(I(t)cos(2πfc​t)+Q(t)sin(2πfc​t))

其中,I(t)I(t)I(t) 和 Q(t)Q(t)Q(t) 是基带信号的两个正交分量。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

I_t = np.array([1 if 0.2 < i < 0.4 else 0 for i in t]) # 基带信号I分量,0或1

Q_t = np.array([1 if 0.6 < i < 0.8 else 0 for i in t]) # 基带信号Q分量,0或1

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

# QAM调制

s_t = A_c * (I_t * np.cos(2 * np.pi * f_c * t) + Q_t * np.sin(2 * np.pi * f_c * t))

# 绘制基带信号和已调信号

plt.figure(figsize=(12, 6))

plt.subplot(3, 1, 1)

plt.plot(t, I_t)

plt.title('基带信号I分量')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 2)

plt.plot(t, Q_t)

plt.title('基带信号Q分量')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 3)

plt.plot(t, s_t)

plt.title('QAM调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.3 解调的基本概念

解调是调制的逆过程,即将已调信号中的信息信号恢复出来的过程。解调技术根据调制方式的不同而有所不同,常见的解调技术包括AM解调、FM解调、PSK解调和QAM解调。

13.3.1 模拟解调技术

13.3.1.2 FM解调

FM解调是将已调信号中的基带信号恢复出来的过程。常见的FM解调技术包括鉴频器(Frequency Discriminator)和锁相环(Phase-Locked Loop, PLL)。

鉴频器解调

鉴频器解调是通过检测已调信号的频率变化来恢复基带信号。鉴频器的核心思想是将频率变化转换为电压变化,从而恢复出基带信号。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.sin(2 * np.pi * 2 * t) # 基带信号,频率为2Hz

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

phi = 0 # 载波相位

k_f = 10 # 调制指数

# FM调制

integral_m_t = np.cumsum(m_t) * (t[1] - t[0]) # 基带信号的积分

s_t = A_c * np.cos(2 * np.pi * f_c * t + 2 * np.pi * k_f * integral_m_t + phi)

# FM解调

# 计算已调信号的瞬时频率

instantaneous_freq = np.diff(np.unwrap(np.angle(s_t))) / (2 * np.pi * (t[1] - t[0]))

# 恢复基带信号

m_t_recovered = instantaneous_freq / (2 * np.pi * k_f)

# 绘制基带信号、已调信号和解调信号

plt.figure(figsize=(12, 6))

plt.subplot(3, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 2)

plt.plot(t, s_t)

plt.title('FM调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 3)

plt.plot(t[:-1], m_t_recovered) # 解调信号的长度比原信号少1

plt.title('FM解调信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

锁相环解调

锁相环(PLL)是一种自动调整频率和相位的电路,可以用于FM解调。PLL通过跟踪已调信号的频率变化来恢复基带信号。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.sin(2 * np.pi * 2 * t) # 基带信号,频率为2Hz

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

phi = 0 # 载波相位

k_f = 10 # 调制指数

# FM调制

integral_m_t = np.cumsum(m_t) * (t[1] - t[0]) # 基带信号的积分

s_t = A_c * np.cos(2 * np.pi * f_c * t + 2 * np.pi * k_f * integral_m_t + phi)

# 锁相环解调

# 初始化PLL参数

vco_freq = f_c # 电压控制振荡器的初始频率

loop_filter_gain = 0.01 # 环路滤波器增益

# 计算PLL的输出

vco_phase = np.zeros_like(t)

error_signal = np.zeros_like(t)

for i in range(1, len(t)):

error_signal[i] = np.angle(s_t[i] * np.exp(-1j * vco_phase[i-1]))

vco_phase[i] = vco_phase[i-1] + 2 * np.pi * vco_freq * (t[1] - t[0]) + loop_filter_gain * error_signal[i]

# 恢复基带信号

m_t_recovered = np.diff(vco_phase) / (2 * np.pi * k_f * (t[1] - t[0]))

# 绘制基带信号、已调信号和解调信号

plt.figure(figsize=(12, 6))

plt.subplot(3, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 2)

plt.plot(t, s_t)

plt.title('FM调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 3)

plt.plot(t[:-1], m_t_recovered) # 解调信号的长度比原信号少1

plt.title('FM解调信号(锁相环)')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.3.2 数字解调技术

13.3.2.1 ASK解调

ASK解调可以通过检测已调信号的幅度变化来恢复基带信号。常见的ASK解调方法包括包络检波和相干解调。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.array([1 if 0.2 < i < 0.4 or 0.6 < i < 0.8 else 0 for i in t]) # 基带信号,0或1

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

phi = 0 # 载波相位

# ASK调制

s_t = A_c * m_t * np.cos(2 * np.pi * f_c * t + phi)

# ASK解调

envelope = np.abs(s_t)

m_t_recovered = np.where(envelope > 0.5, 1, 0) # 简单的幅度检测

# 绘制基带信号、已调信号和解调信号

plt.figure(figsize=(12, 6))

plt.subplot(3, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 2)

plt.plot(t, s_t)

plt.title('ASK调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 3)

plt.plot(t, m_t_recovered)

plt.title('ASK解调信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.3.2.2 FSK解调

FSK解调可以通过检测已调信号的频率变化来恢复基带信号。常见的FSK解调方法包括频谱分析和相位比较。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.array([1 if 0.2 < i < 0.4 or 0.6 < i < 0.8 else 0 for i in t]) # 基带信号,0或1

# 定义载波信号

A_c = 1 # 载波幅度

f_1 = 50 # 载波频率1,50Hz

f_2 = 70 # 载波频率2,70Hz

phi = 0 # 载波相位

# FSK调制

s_t = np.where(m_t == 1, A_c * np.cos(2 * np.pi * f_1 * t + phi), A_c * np.cos(2 * np.pi * f_2 * t + phi))

# FSK解调

# 计算已调信号的瞬时频率

instantaneous_freq = np.diff(np.unwrap(np.angle(s_t))) / (2 * np.pi * (t[1] - t[0]))

# 恢复基带信号

m_t_recovered = np.where(instantaneous_freq > 60, 1, 0) # 60Hz是f_1和f_2的中间值

# 绘制基带信号、已调信号和解调信号

plt.figure(figsize=(12, 6))

plt.subplot(3, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 2)

plt.plot(t, s_t)

plt.title('FSK调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 3)

plt.plot(t[:-1], m_t_recovered) # 解调信号的长度比原信号少1

plt.title('FSK解调信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.3.2.3 PSK解调

PSK解调可以通过检测已调信号的相位变化来恢复基带信号。常见的PSK解调方法包括相干解调和非相干解调。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

m_t = np.array([1 if 0.2 < i < 0.4 or 0.6 < i < 0.8 else 0 for i in t]) # 基带信号,0或1

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

phi_1 = 0 # 相位1

phi_2 = np.pi # 相位2

# PSK调制

s_t = np.where(m_t == 1, A_c * np.cos(2 * np.pi * f_c * t + phi_1), A_c * np.cos(2 * np.pi * f_c * t + phi_2))

# PSK解调

# 生成本地载波信号

local_carrier = A_c * np.cos(2 * np.pi * f_c * t + phi_1)

# 相乘和低通滤波

product = s_t * local_carrier

low_pass_filtered = np.convolve(product, np.ones(100)/100, mode='same') # 简单的低通滤波

# 恢复基带信号

m_t_recovered = np.where(low_pass_filtered > 0, 1, 0)

# 绘制基带信号、已调信号和解调信号

plt.figure(figsize=(12, 6))

plt.subplot(3, 1, 1)

plt.plot(t, m_t)

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 2)

plt.plot(t, s_t)

plt.title('PSK调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 3)

plt.plot(t, m_t_recovered)

plt.title('PSK解调信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.tight_layout()

plt.show()

13.3.2.4 QAM解调

QAM解调可以通过检测已调信号的幅度和相位变化来恢复基带信号。常见的QAM解调方法包括相干解调和非相干解调。

Python代码示例:

import numpy as np

import matplotlib.pyplot as plt

# 定义基带信号

t = np.linspace(0, 1, 1000) # 时间范围

I_t = np.array([1 if 0.2 < i < 0.4 else 0 for i in t]) # 基带信号I分量,0或1

Q_t = np.array([1 if 0.6 < i < 0.8 else 0 for i in t]) # 基带信号Q分量,0或1

# 定义载波信号

A_c = 1 # 载波幅度

f_c = 50 # 载波频率,50Hz

# QAM调制

s_t = A_c * (I_t * np.cos(2 * np.pi * f_c * t) + Q_t * np.sin(2 * np.pi * f_c * t))

# QAM解调

# 生成本地载波信号

local_carrier_I = A_c * np.cos(2 * np.pi * f_c * t)

local_carrier_Q = A_c * np.sin(2 * np.pi * f_c * t)

# 相乘和低通滤波

product_I = s_t * local_carrier_I

product_Q = s_t * local_carrier_Q

low_pass_filtered_I = np.convolve(product_I, np.ones(100)/100, mode='same') # 简单的低通滤波

low_pass_filtered_Q = np.convolve(product_Q, np.ones(100)/100, mode='same') # 简单的低通滤波

# 恢复基带信号

I_t_recovered = np.where(low_pass_filtered_I > 0.5, 1, 0)

Q_t_recovered = np.where(low_pass_filtered_Q > 0.5, 1, 0)

# 绘制基带信号、已调信号和解调信号

plt.figure(figsize=(12, 6))

plt.subplot(3, 1, 1)

plt.plot(t, I_t, label='I分量')

plt.plot(t, Q_t, label='Q分量')

plt.title('基带信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.legend()

plt.subplot(3, 1, 2)

plt.plot(t, s_t)

plt.title('QAM调制信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.subplot(3, 1, 3)

plt.plot(t, I_t_recovered, label='I分量(恢复)')

plt.plot(t, Q_t_recovered, label='Q分量(恢复)')

plt.title('QAM解调信号')

plt.xlabel('时间 (s)')

plt.ylabel('幅度')

plt.legend()

plt.tight_layout()

plt.show()

13.4 调制解调器在无线通信中的应用

调制解调器在无线通信系统中扮演着至关重要的角色。它们使得低频的基带信号可以被有效地传输到高频的无线信道中,从而提高了信号的传输距离和可靠性。不同的调制解调技术适用于不同的通信场景和需求。

13.4.1 模拟调制的应用

AM调制:广泛应用于广播电台和短波通信中,因为它实现简单且接收设备成本较低。FM调制:常用于高质量的广播电台和无线通信中,因为它对噪声和干扰的抵抗能力较强。PM调制:较少使用,但可以在某些特殊场合中提高信号的传输可靠性。

13.4.2 数字调制的应用

ASK调制:在低速数据传输中应用较多,因为它实现简单。FSK调制:在无线电遥控、无线数据传输和低功耗通信中应用广泛,因为它对频率偏移和多普勒效应的抵抗能力较强。PSK调制:在高速数据传输和卫星通信中应用较多,因为它可以在较高的数据速率下保持较低的误码率。QAM调制:在高速无线通信和有线通信中应用广泛,因为它可以同时利用幅度和相位的变化来提高数据传输效率。

13.4.3 未来展望

随着无线通信技术的不断进步,调制解调器的设计也在不断优化。未来的调制解调器将更加高效、可靠,并且能够适应更复杂的通信环境。例如,多载波调制技术(如OFDM)和自适应调制技术(如ADPCM)已经在现代通信系统中得到广泛应用。这些技术将进一步提高无线通信系统的性能,满足日益增长的通信需求。

13.5 总结

调制解调器是无线通信系统中不可或缺的关键设备,通过调制和解调过程,可以有效地将信息信号传输到无线信道中并恢复出来。本节介绍了常见的调制解调技术,包括模拟调制和数字调制,并通过Python代码示例详细展示了这些技术的实现过程。希望这些内容能帮助读者更好地理解调制解调器的工作原理及其在无线通信中的应用。

相关推荐

安字《说文解字》原文及注解
365bet足球盘

安字《说文解字》原文及注解

08-06 👁️ 7413
英特尔和amd处理器哪个好:全方位深度解析(2025版)
完美体育365官方网站

英特尔和amd处理器哪个好:全方位深度解析(2025版)

07-26 👁️ 5631
泰米时空为什么停服(泰米时空)
完美体育365官方网站

泰米时空为什么停服(泰米时空)

08-13 👁️ 246
狂野飙车8配置要求 最低所需要求介绍
365bet足球盘

狂野飙车8配置要求 最低所需要求介绍

08-10 👁️ 3242
鹡鸰女神第一季
完美体育365官方网站

鹡鸰女神第一季

07-20 👁️ 4624
iPhone 通知震动关闭教学,让App 通知不要震动但要跳通知!
手机有声漫画app排行榜TOP10推荐
365bet足球盘

手机有声漫画app排行榜TOP10推荐

07-01 👁️ 5930
揭秘:升级到超级会员8级的时间与策略
365bet体育在线中文

揭秘:升级到超级会员8级的时间与策略

08-04 👁️ 5537
ipad一般什么时候降价
完美体育365官方网站

ipad一般什么时候降价

07-06 👁️ 8808