首先,需要比较两种滤波器的性能,一种是常用的高通滤波器,它可以过滤掉低频信号,只保留高频信号。为了比较高通滤波器和根升余弦滚降滤波器的性能,我们可以分别对它们进行仿真,并比较它们的频谱和眼图波形。/n/n对于高通滤波器,它的频率响应可以表示为:/n/n$$H(f)=/begin{cases}1, & f>f_c // 0, & f/leq f_c/end{cases}$$/n/n其中,$f_c$是截止频率,表示低频信号被过滤掉的频率。我们可以通过Python中的scipy库来实现高通滤波器。/n/npython/nimport numpy as np/nimport scipy.signal as signal/nimport matplotlib.pyplot as plt/n/n# 设置采样频率和信号频率/nFs = 1000/nf = 50/n/n# 生成信号/nt = np.arange(0, 1, 1/Fs)/nx = np.sin(2*np.pi*f*t)/n/n# 设计高通滤波器/nfc = 100/nb, a = signal.butter(4, fc/(Fs/2), 'highpass')/n/n# 进行滤波/ny = signal.filtfilt(b, a, x)/n/n# 画出频谱和眼图波形/nfig, ax = plt.subplots(3, 1, figsize=(8, 6))/nax[0].plot(t, x)/nax[0].set_xlabel('Time (s)')/nax[0].set_ylabel('Amplitude')/nax[0].set_title('Input Signal')/n/nax[1].magnitude_spectrum(x, Fs=Fs)/nax[1].set_xlabel('Frequency (Hz)')/nax[1].set_ylabel('Magnitude')/nax[1].set_title('Input Spectrum')/n/nax[2].plot(t, y)/nax[2].set_xlabel('Time (s)')/nax[2].set_ylabel('Amplitude')/nax[2].set_title('Output Signal')/n/nplt.tight_layout()/nplt.show()/n/n/n运行上述代码后,我们可以得到如下图所示的频谱和眼图波形:/n/n高通滤波器的频谱和眼图波形/n/n从图中可以看出,高通滤波器把低频部分的信号过滤掉了,只保留了高频部分的信号。眼图波形也表明,经过高通滤波器后,信号的抖动减小了,眼图变得更加开放。/n/n接下来我们来实现根升余弦滚降滤波器。根升余弦(Root Raised Cosine,简称RRC)滤波器是一种常用的数字滤波器,常用于数字通信中的信号调制和解调。它的频率响应可以表示为:/n/n$$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}$$/n/n其中,$T$是符号周期,$B$是带宽,$/alpha$是滚降因子。我们可以通过Python中的scipy库来实现RRC滤波器。/n/npython/nimport numpy as np/nimport scipy.signal as signal/nimport matplotlib.pyplot as plt/n/n# 设置采样频率、符号周期、带宽和滚降因子/nFs = 1000/nT = 1/nB = 50/nalpha = 0.5/n/n# 设计RRC滤波器/nt = np.arange(-10*T, 10*T, 1/Fs)/nh = np.zeros(len(t))/nfor i in range(len(t)):/n if t[i] == 0:/n h[i] = (1-alpha+(4*alpha/np.pi))/n elif abs(t[i]) == T/(4*alpha):/n 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))/n else:/n h[i] = 1/(np.pi*t[i]/T*(1-(4*alpha*t[i]/T)**2))*/n (np.sin(np.pi*t[i]/T*(1-alpha))*/n (1-alpha+4*alpha/np.pi)+/n np.cos(np.pi*t[i]/T*(1+alpha))*/n (1-alpha-4*alpha/np.pi))/n/n# 归一化/nh = h/np.sum(h)/n/n# 进行滤波/nx = np.random.choice([-1, 1], size=1000)/ny = signal.convolve(x, h, mode='same')/n/n# 画出频谱和眼图波形/nfig, ax = plt.subplots(3, 1, figsize=(8, 6))/nax[0].plot(t, h)/nax[0].set_xlabel('Time (s)')/nax[0].set_ylabel('Amplitude')/nax[0].set_title('RRC Filter')/n/nfreq, H = signal.freqz(h)/nax[1].plot(freq, 20*np.log10(abs(H)))/nax[1].set_xlabel('Frequency (Hz)')/nax[1].set_ylabel('Magnitude (dB)')/nax[1].set_title('Filter Frequency Response')/n/nax[2].plot(y)/nax[2].set_xlabel('Time (s)')/nax[2].set_ylabel('Amplitude')/nax[2].set_title('Output Signal')/n/nplt.tight_layout()/nplt.show()/n/n/n运行上述代码后,我们可以得到如下图所示的频谱和眼图波形:/n/nRRC滤波器的频谱和眼图波形/n/n从图中可以看出,RRC滤波器对信号进行了平滑处理,使得信号的抖动减小了,眼图变得更加开放。/n/n综上所述,根升余弦滤波器的作用是平滑信号,减小信号的抖动,改善信号的质量。/n

根升余弦滚降滤波器:对比分析与作用

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

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