离散时间傅里叶变换:实用FIR滤波器设计与分析
立即解锁
发布时间: 2025-08-20 02:33:07 阅读量: 2 订阅数: 8 

### 离散时间傅里叶变换:实用FIR滤波器设计与分析
#### 1. 理想滤波器与实际需求
理想滤波器在概念上非常有用,它具有完美的通带和阻带特性。例如理想带通滤波器(BPF),其频率响应在特定频段 $\hat{\omega}_{co1} \leq |\hat{\omega}| \leq \hat{\omega}_{co2}$ 内信号无衰减通过,其他频率信号则完全被滤除。然而,理想滤波器在实际中无法用有限的计算量实现,因此需要进行滤波器设计来逼近理想频率响应,以得到实用的滤波器。
对于有限长单位脉冲响应(FIR)滤波器,设计方法的核心是确定滤波器系数 $\{b_k\}$,将其用于时域的差分方程实现:
\[y[n] = b_0x[n] + b_1x[n - 1] + b_2x[n - 2] + \cdots + b_Mx[n - M]\]
这些滤波器系数就是脉冲响应的值,脉冲响应的离散时间傅里叶变换(DTFT)决定了设计的频率响应的实际幅度和相位,通过评估其与理想响应的匹配程度来判断设计的优劣。
#### 2. 窗函数方法
在众多逼近理想频率响应的方法中,窗函数方法是一种常用且可通过DTFT进行分析的方法。
##### 2.1 窗函数的基本概念
窗函数在信号处理中应用广泛,其基本思想是通过与信号 $x[n]$ 相乘 $w[n]x[n + n_0]$ 来提取长信号的有限部分。这要求窗函数 $w[n]$ 在有限长度区间外的值为零。在滤波器设计中,窗函数用于截断无限长的理想脉冲响应 $h_i[n]$ 并对其进行修改。
- **矩形窗函数**:最简单的窗函数是 $L$ 点矩形窗,其定义为
\[w_r[n] = r_L[n] =
\begin{cases}
1, & 0 \leq n \leq L - 1 \\
0, & \text{其他}
\end{cases}\]
与矩形窗相乘仅对信号进行截断,$w_r[n]h_i[n + n_0]$ 从 $n = n_0$ 开始提取 $h_i[n]$ 的 $L$ 个值。
- **汉明窗函数**:对称的 $L$ 点汉明窗定义为
\[w_m[n] =
\begin{cases}
0.54 - 0.46 \cos(2\pi n / (L - 1)), & 0 \leq n \leq L - 1 \\
0, & \text{其他}
\end{cases}\]
MATLAB 中的 `hamming(L)` 函数可计算汉明窗的值。汉明窗的值在中间较大,两端逐渐减小,其长度可以是偶数或奇数,奇数长度的汉明窗更易于表征,最大值为 1.0,出现在中点 $n = (L - 1) / 2$,且关于中点对称。
##### 2.2 对理想脉冲响应加窗
以理想低通滤波器(LPF)为例,其脉冲响应是无限长的 sinc 函数:
\[h_i[n] = \frac{\sin(\hat{\omega}_{co}n)}{\pi n} \stackrel{DTFT}{\longleftrightarrow} H_i(e^{j\hat{\omega}}) =
\begin{cases}
1, & |\hat{\omega}| \leq \hat{\omega}_{co} \\
0, & \hat{\omega}_{co} < |\hat{\omega}| \leq \pi
\end{cases}\]
为了得到实用的 FIR 滤波器,将 sinc 函数与窗函数相乘得到长度为 $L$ 的脉冲响应。同时,需要将 sinc 函数进行移位,使其主瓣位于窗函数的中心,以利用理想脉冲响应中的最大值。根据 DTFT 的移位特性,时间移位 $(L - 1) / 2$ 会在 DTFT 中引入线性相位。因此,加窗后的脉冲响应为
\[h[n] = w[n]h_i[n - (L - 1) / 2] =
\begin{cases}
w[n]\frac{\sin(\hat{\omega}_{co}(n - (L - 1) / 2))}{\pi(n - (L - 1) / 2)}, & n = 0, 1, \cdots, L - 1 \\
0, & \text{其他}
\end{cases}\]
其中 $w[n]$ 可以是矩形窗或汉明窗。由于窗函数的非零域从 $n = 0$ 开始,得到的 FIR 滤波器是因果的。
不同窗函数的加窗效果不同。矩形窗仅对理想脉冲响应进行截断,而汉明窗不仅截断,还对截断后的脉冲响应进行加权,使两端的值比中间的值减小更多,从而平滑地衰减截断后的理想低通脉冲响应的两端。
#### 3. 实用滤波器的频率响应
实用滤波器是因果的长度为 $L$ 的滤波器,其频率响应应尽可能逼近理想滤波器的频率响应。虽然可以对加窗后的 sinc 函数进行 DTFT,但得到的公式较为复杂,难以直观评估频率域的逼近质量。因此,可使用 MATLAB 的 `freqz` 函数直接评估频率响应,因为加窗滤波器系数有简单的计算公式。
以长度为 25、截止频率 $\h
0
0
复制全文
相关推荐










