高斯脉冲成型滤波器代码
时间: 2023-12-02 16:02:01 浏览: 75
高斯脉冲成型滤波器可以用于数字通信中的信号调制和解调。以下是一个用Python实现的高斯脉冲成型滤波器的代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 高斯脉冲成型滤波器函数
def gaussian_pulse_shaping_filter(t, Tb, alpha):
"""
Gaussian pulse shaping filter function
Parameters:
t: ndarray
时间序列
Tb: float
符号时间
alpha: float
滚降系数
Returns:
h: ndarray
高斯脉冲成型滤波器的输出
"""
t1 = Tb/4/alpha
h = np.exp(-t**2/t1**2)
h = h/np.sum(h)
return h
# 生成时间序列
Tb = 1
alpha = 0.5
fs = 10/Tb
t = np.arange(-5*Tb, 5*Tb, 1/fs)
# 高斯脉冲成型滤波器
h = gaussian_pulse_shaping_filter(t, Tb, alpha)
# 绘制滤波器时域响应和频域响应
plt.subplot(2,1,1)
plt.plot(t/Tb, h)
plt.xlabel('时间(Tb)')
plt.title('高斯脉冲成型滤波器时域响应')
plt.grid()
plt.subplot(2,1,2)
H = np.fft.fftshift(np.fft.fft(h))
f = np.fft.fftshift(np.fft.fftfreq(len(h), d=1/fs))
plt.plot(f*Tb, np.abs(H))
plt.xlabel('频率(Hz)')
plt.title('高斯脉冲成型滤波器频域响应')
plt.grid()
plt.tight_layout()
plt.show()
```
这里使用了numpy和matplotlib库来生成时间序列和绘制滤波器的时域响应和频域响应。函数中的参数Tb表示一个符号所占用的时间,alpha是高斯脉冲的滚降系数,t是时间序列。函数返回滤波器的输出h。在绘制时域和频域响应的图像时,我们分别使用plt.subplot()函数来生成两个子图,并使用plt.plot()函数绘制滤波器的时域响应和频域响应。最后使用plt.show()函数显示图像。
你可以根据自己的需要修改函数中的参数,并使用这个代码来生成自己需要的高斯脉冲成型滤波器。
阅读全文