matlab设计滤波器,用窗函数法设计带通滤波器,且给定上、下边带截止频率为W1和W2,试求理想带通的单位脉冲响应。
时间: 2023-10-24 15:05:37 浏览: 152
MATLAB基于窗函数设计的带通滤波器.docx
5星 · 资源好评率100%
首先,理想带通滤波器的频率响应为:
$H(e^{j\omega}) = \begin{cases} 1, &\text{if } \omega_1 < \omega < \omega_2 \\ 0, &\text{otherwise} \end{cases}$
其中,$\omega_1$和$\omega_2$分别为上下边带的截止频率。
根据傅里叶反变换的定义,理想带通滤波器的单位脉冲响应为:
$h[n] = \frac{1}{2\pi}\int_{-\pi}^{\pi} H(e^{j\omega}) e^{j\omega n} d\omega$
代入上式中的频率响应,可得:
$h[n] = \frac{1}{2\pi}\int_{\omega_1}^{\omega_2} e^{j\omega n} d\omega$
对上式进行积分,可得:
$h[n] = \begin{cases} \frac{sin(\omega_2 n)-sin(\omega_1 n)}{\pi n}, &\text{if } n\neq 0 \\ 2(\omega_2 - \omega_1)/\pi, &\text{if } n=0 \end{cases}$
这就是理想带通滤波器的单位脉冲响应。
接下来,可以用窗函数法将理想带通滤波器变换成实际的数字滤波器。假设数字滤波器的长度为$N$,则可以选用矩形窗函数来实现。具体来说,可以将理想带通滤波器的单位脉冲响应$h[n]$乘以一个长度为$N$的矩形窗函数$w[n]$,得到数字滤波器的单位脉冲响应:
$h_d[n] = h[n]w[n]$
其中,$w[n]$的定义如下:
$w[n] = \begin{cases} 1, &\text{if } 0\leq n \leq N-1 \\ 0, &\text{otherwise} \end{cases}$
最后,可以使用MATLAB中的fir1函数设计数字滤波器。代码如下:
```matlab
N = 101; % 滤波器长度
W1 = 0.2*pi; % 上边带截止频率
W2 = 0.4*pi; % 下边带截止频率
n = -(N-1)/2:(N-1)/2; % 时间序列
h = (sin(W2*n)-sin(W1*n))./(pi*n); % 理想带通滤波器单位脉冲响应
h(isnan(h)) = 2*(W2-W1)/pi; % 处理n=0时的值
w = ones(1, N); % 矩形窗函数
hd = h.*w; % 数字滤波器单位脉冲响应
b = fir1(N-1, [W1, W2]/pi); % FIR滤波器系数
```
其中,b为FIR滤波器的系数,可以用于滤波器的实际应用。
阅读全文