📅  最后修改于: 2023-12-03 15:26:51.265000             🧑  作者: Mango
脉冲调制(Pulse Width Modulation,PWM)是一种调制技术,将模拟信号转换为数字信号,常用于控制电机、LED等。模拟脉冲调制(Analog Pulse Width Modulation,APWM)是一种类似的技术,但是它可以将数字信号通过一个滤波器转换为模拟信号,用于音频信号、无线电信号等领域。
本文将介绍如何使用Python实现模拟脉冲调制。
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, 2*np.pi, 1000)
y = np.sin(t)
plt.plot(t, y)
plt.show()
duty_cycle = 0.5 # 脉冲信号占空比
time_period = 2*np.pi # 脉冲信号周期
def pulse(t):
return (t % time_period) < (time_period * duty_cycle)
t = np.linspace(0, 4*np.pi, 1000)
y = pulse(t)
plt.plot(t, y)
plt.show()
modulated_signal = y * (1 + np.sin(t))
plt.plot(t, modulated_signal)
plt.show()
from scipy import signal
nyquist_frequency = 20 # 采样频率的一半
cutoff_frequency = 5 # 截止频率
sampling_period = np.average(np.diff(t))
sampling_frequency = 1 / sampling_period
b, a = signal.butter(4, cutoff_frequency/nyquist_frequency)
filtered_signal = signal.filtfilt(b, a, modulated_signal)
plt.plot(t, filtered_signal)
plt.show()
将上面的代码整合到一个文件中,运行之后可以看到以下效果:
可以看到,经过调制和滤波后,获得了一个与原始信号非常接近的模拟信号。
本文介绍了如何使用Python实现模拟脉冲调制,包括正弦波的生成、脉冲信号的生成、调制和滤波等步骤。对于需要生成模拟信号的场合,APWM是一种很好的选项。