FIR滤波器:原理、特性与应用
立即解锁
发布时间: 2025-08-20 02:33:05 阅读量: 2 订阅数: 8 

### FIR滤波器:原理、特性与应用
#### 1. FIR滤波示例的启示
在信号处理中,FIR(有限脉冲响应)滤波器有着重要的应用。通过一个示例,我们可以得到一些关于FIR滤波的重要结论。在该示例中,正弦分量相对于输入正弦波大幅减小,输出分量在经过M/2 = 3个样本的移位后,非常接近输入的指数分量。
从这个例子中,我们可以得出以下几点结论:
- **信号修改能力**:FIR滤波能够以有用的方式修改信号。
- **平均间隔长度的影响**:平均间隔的长度对输出结果有很大影响。
- **引入移位**:滑动平均滤波器似乎会引入M/2个样本的移位。
这些观察结果适用于更一般的FIR滤波器。不过,在充分理解这个例子的细节之前,我们需要更深入地探索FIR滤波器的特性。
#### 2. 练习5.3:MATLAB实现8点平均器
我们可以使用MATLAB实现一个8点平均器,并处理复合信号。具体要求是输出在长度为8的滑动窗口完全与输入信号重叠的区域内,不应有正弦干扰。以下是操作步骤:
1. 在MATLAB中编写代码实现8点平均器。
2. 处理图5 - 6(a)中的复合信号。
3. 验证MATLAB输出中是否满足无正弦干扰的条件。
4. 通过考虑8点平均器对正弦波的单独影响,解释为什么会得到这样的结果。
#### 3. 单位脉冲响应与卷积
在这部分内容中,我们将介绍三个新的概念:单位脉冲序列、单位脉冲响应和卷积和。我们会发现,脉冲响应能够完全表征FIR滤波器,因为当已知单位脉冲响应时,卷积和提供了一个从输入计算输出的公式。
##### 3.1 单位脉冲序列
单位脉冲序列可能是最简单的序列,因为它只有一个非零值,该值出现在n = 0处。其数学表示为Kronecker delta函数:
\[
\delta[n] =
\begin{cases}
1, & n = 0 \\
0, & n \neq 0
\end{cases}
\]
以下是\(\delta[n]\)和\(\delta[n - 2]\)的取值表:
| n | ... | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | ... |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| \(\delta[n]\) | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| \(\delta[n - 2]\) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
移位脉冲\(\delta[n - 2]\)在其参数为零时非零,即n - 2 = 0,也就是n = 2时。
移位脉冲是表示信号和系统的一个非常有用的概念。例如,信号\(x[n] = 2\delta[n] + 4\delta[n - 1] + 6\delta[n - 2] + 4\delta[n - 3] + 2\delta[n - 4]\)可以用以下表格表示:
| n | ... | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | ... |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| \(2\delta[n]\) | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| \(4\delta[n - 1]\) | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| \(6\delta[n - 2]\) | 0 | 0 | 0 | 0 | 0 | 6 | 0 | 0 | 0 | 0 | 0 |
| \(4\delta[n - 3]\) | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 0 |
| \(2\delta[n - 4]\) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 |
| \(x[n]\) | 0 | 0 | 0 | 2 | 4 | 6 | 4 | 2 | 0 | 0 | 0 |
实际上,任何序列都可以用这种方式表示,其通用公式为:
\[
x[n] = \sum_{k} x[k]\delta[n - k] = \cdots + x[-1]\delta[n + 1] + x[0]\delta[n] + x[1]\delta[n - 1] + x[2]\delta[n - 2] + \cdots
\]
##### 3.2 单位脉冲响应序列
当滤波器的输入是单位脉冲\(\delta[n]\)时,输出被称为单位脉冲响应,通常用\(h[n]\)表示。在系统的框图中,我们在输入处显示脉冲序列\(\delta[n]\),在输出处显示对应的脉冲响应\(h[n]\)。
对于FIR滤波器,当输入\(x[n] = \delta[n]\)时,输出\(y[n] = h[n]\),其表达式为:
\[
h[n] = \sum_{k = 0}^{M} b_k \delta[n - k] =
\begin{cases}
b_n, & n = 0, 1, 2, \cdots, M \\
0, & \text{otherwise}
\end{cases}
\]
以下是脉冲响应的表格表示:
| n | n < 0 | 0 | 1 | 2 | 3 | ... | M | M + 1 | n > M |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| \(x[n] = \delta[n]\) | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| \(y[n] = h[n]\) | 0 | \(b_0\) | \(b_1\) | \(b_2\) | \(b_3\) | ... | \(b_M\) | 0 | 0 |
可以看出,FIR滤波器的脉冲响应\(h[n]\)就是差分方程系数的序列。由于\(h[n]\)在\(n < 0\)和\(n > M\)时为0,所以脉冲响应序列\(h[n]\)的长度是有限的,这也是为什么该系统被称为FIR系统。
例如,对于因果3点滑动平均滤波器,其脉冲响应的图形如图5 - 9所示。
流程图如下:
```mermaid
graph TD;
A[输入单位脉冲序列\(\delta[n]\)] --> B[FIR滤波器];
B --> C[输出单位脉冲响应\(h[n]\)];
```
##### 3.3 单位延迟系统
单位延迟系统是一个重要的系统,它将信号延迟或移位n0个单位,其表达式为\(y[n] = x[n - n_0
0
0
复制全文
相关推荐










