首先,根据题意,需要将滤波器类型改变,比较两种滤波器的性能。一种常用的滤波器是高通滤波器,它可以过滤掉低频信号,只保留高频信号。为了比较高通滤波器和根升余弦滚降滤波器的性能,我们可以分别对它们进行仿真,并比较它们的频谱和眼图波形。

对于高通滤波器,它的频率响应可以表示为:

$$H(f)=\begin{cases}1, & f>f_c \ 0, & f\leq f_c\end{cases}$$

其中,$f_c$是截止频率,表示低频信号被过滤掉的频率。我们可以通过Python中的scipy库来实现高通滤波器。

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

# 设置采样频率和信号频率
Fs = 1000
f = 50

# 生成信号
t = np.arange(0, 1, 1/Fs)
x = np.sin(2*np.pi*f*t)

# 设计高通滤波器
fc = 100
b, a = signal.butter(4, fc/(Fs/2), 'highpass')

# 进行滤波
y = signal.filtfilt(b, a, x)

# 画出频谱和眼图波形
fig, ax = plt.subplots(3, 1, figsize=(8, 6))
ax[0].plot(t, x)
ax[0].set_xlabel('Time (s)')
ax[0].set_ylabel('Amplitude')
ax[0].set_title('Input Signal')

ax[1].magnitude_spectrum(x, Fs=Fs)
ax[1].set_xlabel('Frequency (Hz)')
ax[1].set_ylabel('Magnitude')
ax[1].set_title('Input Spectrum')

ax[2].plot(t, y)
ax[2].set_xlabel('Time (s)')
ax[2].set_ylabel('Amplitude')
ax[2].set_title('Output Signal')

plt.tight_layout()
plt.show()

运行上述代码后,我们可以得到如下图所示的频谱和眼图波形:

高通滤波器的频谱和眼图波形

从图中可以看出,高通滤波器把低频部分的信号过滤掉了,只保留了高频部分的信号。眼图波形也表明,经过高通滤波器后,信号的抖动减小了,眼图变得更加开放。

接下来我们来实现根升余弦滚降滤波器。根升余弦(Root Raised Cosine,简称RRC)滤波器是一种常用的数字滤波器,常用于数字通信中的信号调制和解调。它的频率响应可以表示为:

$$H(f)=\begin{cases}\frac1T\sqrt{\frac{2}{\pi}}\left[\cos(\frac{\pi}{4\alpha})+\frac{\alpha\pi}{4}\sin(\frac{\pi}{4\alpha})\right]\sqrt{\cos(\frac{\pi}{2BT}(f-\frac{1-\alpha}{2T}))},& |f|\leq\frac{1-\alpha}{2T} \ \frac1T\sqrt{\frac{2}{\pi}}\left[\sin(\frac{\pi}{4\alpha})-\frac{\alpha\pi}{4}\cos(\frac{\pi}{4\alpha})\right]\sqrt{\cos(\frac{\pi}{2BT}(f+\frac{1+\alpha}{2T}))},& \frac{1-\alpha}{2T}<|f|\leq\frac{1+\alpha}{2T} \ 0,& |f|>\frac{1+\alpha}{2T}\end{cases}$$

其中,$T$是符号周期,$B$是带宽,$\alpha$是滚降因子。我们可以通过Python中的scipy库来实现RRC滤波器。

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

# 设置采样频率、符号周期、带宽和滚降因子
Fs = 1000
T = 1
B = 50
alpha = 0.5

# 设计RRC滤波器
t = np.arange(-10*T, 10*T, 1/Fs)
h = np.zeros(len(t))
for i in range(len(t)):
    if t[i] == 0:
        h[i] = (1-alpha+(4*alpha/np.pi))
    elif abs(t[i]) == T/(4*alpha):
        h[i] = alpha/np.sqrt(2)*((1+2/np.pi)*np.sin(np.pi/4/alpha)+(1-2/np.pi)*np.cos(np.pi/4/alpha))
    else:
        h[i] = 1/(np.pi*t[i]/T*(1-(4*alpha*t[i]/T)**2))*\
            (np.sin(np.pi*t[i]/T*(1-alpha))*\
             (1-alpha+4*alpha/np.pi)+\
             np.cos(np.pi*t[i]/T*(1+alpha))*\
             (1-alpha-4*alpha/np.pi))

# 归一化
h = h/np.sum(h)

# 进行滤波
x = np.random.choice([-1, 1], size=1000)
y = signal.convolve(x, h, mode='same')

# 画出频谱和眼图波形
fig, ax = plt.subplots(3, 1, figsize=(8, 6))
ax[0].plot(t, h)
ax[0].set_xlabel('Time (s)')
ax[0].set_ylabel('Amplitude')
ax[0].set_title('RRC Filter')

freq, H = signal.freqz(h)
ax[1].plot(freq, 20*np.log10(abs(H)))
ax[1].set_xlabel('Frequency (Hz)')
ax[1].set_ylabel('Magnitude (dB)')
ax[1].set_title('Filter Frequency Response')

ax[2].plot(y)
ax[2].set_xlabel('Time (s)')
ax[2].set_ylabel('Amplitude')
ax[2].set_title('Output Signal')

plt.tight_layout()
plt.show()

运行上述代码后,我们可以得到如下图所示的频谱和眼图波形:

RRC滤波器的频谱和眼图波形

从图中可以看出,RRC滤波器对信号进行了平滑处理,使得信号的抖动减小了,眼图变得更加开放。

综上所述,根升余弦滤波器的作用是平滑信号,减小信号的抖动,改善信号的质量

改变滤波型类型对比观察两种滤波器的信道输入与输出信号频谱、信道输出信号眼图波形图分析根升余弦滚降滤波器的作用。

原文地址: http://www.cveoy.top/t/topic/gHHG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录