臧雁德 发表于 2023-9-14 20:43:52

求助,python如何实现正弦信号调制、解调

求助,python如何实现正弦信号调制、解调,有大佬能分享个信号处理的样本吗,练练手

isdkz 发表于 2023-9-14 20:43:53

在Python中,可以使用NumPy和SciPy库来实现正弦信号的调制和解调。

调制:

调制是将一个低频信号(称为基带信号)转换为高频信号(称为载波信号)的过程。在Python中,我们可以使用NumPy库来生成基带信号和载波信号,然后将它们相乘以进行调制。

以下是一个示例代码,演示如何生成基带信号和载波信号,并将它们相乘以进行调制:

import numpy as np
import matplotlib.pyplot as plt

# 生成基带信号
Fs = 1000# 采样率
t = np.arange(0, 1, 1/Fs)# 时间向量
f = 10# 基带信号频率
baseband_signal = np.sin(2*np.pi*f*t)

# 生成载波信号
Fc = 100# 载波信号频率
carrier_signal = np.sin(2*np.pi*Fc*t)

# 进行调制
modulated_signal = baseband_signal * carrier_signal

# 绘制信号图形
plt.subplot(3, 1, 1)
plt.plot(t, baseband_signal)
plt.title('Baseband Signal')

plt.subplot(3, 1, 2)
plt.plot(t, carrier_signal)
plt.title('Carrier Signal')

plt.subplot(3, 1, 3)
plt.plot(t, modulated_signal)
plt.title('Modulated Signal')

plt.tight_layout()
plt.show()


解调:

解调是将调制信号转换回原始基带信号的过程。在Python中,我们可以使用SciPy库中的解调函数来实现解调。

以下是一个示例代码,演示如何使用SciPy库中的解调函数对调制信号进行解调:

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import hilbert

# 生成调制信号
Fs = 1000# 采样率
t = np.arange(0, 1, 1/Fs)# 时间向量
f = 10# 基带信号频率
baseband_signal = np.sin(2*np.pi*f*t)
Fc = 100# 载波信号频率
carrier_signal = np.sin(2*np.pi*Fc*t)
modulated_signal = baseband_signal * carrier_signal

# 进行解调
analytic_signal = hilbert(modulated_signal)
amplitude_envelope = np.abs(analytic_signal)
demodulated_signal = np.unwrap(np.angle(analytic_signal))

# 绘制信号图形
plt.subplot(4, 1, 1)
plt.plot(t, baseband_signal)
plt.title('Baseband Signal')

plt.subplot(4, 1, 2)
plt.plot(t, carrier_signal)
plt.title('Carrier Signal')

plt.subplot(4, 1, 3)
plt.plot(t, modulated_signal)
plt.title('Modulated Signal')

plt.subplot(4, 1, 4)
plt.plot(t, demodulated_signal)
plt.title('Demodulated Signal')

plt.tight_layout()
plt.show()


在上面的代码中,我们使用了SciPy库中的hilbert函数来生成解调信号的解析信号。然后,我们计算解析信号的幅度包络和相位角,并使用unwrap函数来处理相位角,以获得解调信号。
页: [1]
查看完整版本: 求助,python如何实现正弦信号调制、解调