# “冲击响应不变法”与“双线性变换法”理解及对比报告

**实验任务：** 详述对无限长脉冲响应（IIR）数字滤波器设计中“冲击响应不变法”和“双线性变换法”的理解。
**实验环境：** Python 3.14 (NumPy, SciPy, Matplotlib)
**文件路径：** `Homework/IIR_Transform_Methods/`

---

## 1. 理论背景
设计 IIR 数字滤波器最普遍的做法是：先借助成熟的**模拟滤波器设计理论**（如巴特沃斯、切比雪夫等）设计出一个满足指标的模拟滤波器系统函数 $H_a(s)$，然后再通过某种映射关系将 $s$ 平面映射到 $z$ 平面，得到数字滤波器的系统函数 $H(z)$。

其中最核心、最常用的两种映射方法就是**冲击响应不变法**和**双线性变换法**。

---

## 2. 冲击响应不变法 (Impulse Invariance Method)

### 2.1 核心思想
顾名思义，这种方法的核心在于**保持滤波器的时域响应特征不变**。
我们将模拟滤波器的连续冲击响应 $h_a(t)$ 按照采样周期 $T$ 进行等间隔采样，令数字滤波器的离散单位脉冲响应 $h[n]$ 完全等于采样后的值：
$$ h[n] = h_a(nT) $$
（注：通常会乘以 $T$，即 $h[n] = T \cdot h_a(nT)$，以保证数字与模拟的直流增益一致）。

### 2.2 优缺点分析
- **优点（保留时域波形）**：由于直接对时域波形采样，数字滤波器完美保留了模拟滤波器在时域上的动态响应特性。此外，模拟频率 $\Omega$ 和数字频率 $\omega$ 之间呈**严格的线性关系** ($\omega = \Omega T$)。
- **缺点（频谱混叠现象）**：由采样定理可知，时域离散化会导致频域的周期延拓。如果原模拟滤波器不是严格带限的（高频衰减不够快），那么高于折叠频率（奈奎斯特频率 $f_s/2$）的成分就会混叠到低频段。
- **适用场景**：只适用于衰减很快的**低通**和**带通**滤波器。绝对**不能**用于高通和带阻滤波器（因为它们的高频增益不为 0，采样必混叠）。

---

## 3. 双线性变换法 (Bilinear Transform Method)

### 3.1 核心思想
为了彻底解决“冲击响应不变法”的频谱混叠问题，双线性变换法采用了**数值积分**的思想，并利用一个非线性映射（共形映射），将整个 $s$ 平面的虚轴（$j\Omega$，从 $-\infty$ 到 $+\infty$）硬生生地“压缩”并映射到 $z$ 平面的单位圆上（从 $-\pi$ 到 $+\pi$）。
其变换公式为：
$$ s = \frac{2}{T} \frac{1 - z^{-1}}{1 + z^{-1}} $$

### 3.2 优缺点分析
- **优点（杜绝混叠）**：由于把整个无穷大的模拟频率轴映射到了一个有限的单位圆上，**不存在任何频谱延拓和混叠**。这种方法可以用来设计任何类型（低通、高通、带通、带阻）的滤波器。
- **缺点（频率畸变）**：为了把无穷大的区间挤进有限的区间里，模拟频率 $\Omega$ 和数字频率 $\omega$ 之间呈现了**非线性的正切关系**：
  $$ \Omega = \frac{2}{T} \tan\left(\frac{\omega}{2}\right) $$
  这被称为“频率扭曲（Frequency Warping）”。高频部分的刻度被严重压缩。为了让数字滤波器的截止频率准确落在预定位置，必须在设计模拟滤波器前对指标进行**预畸变 (Pre-warping)**。此外，这种非线性映射破坏了时域波形的形状。

---

## 4. Python 模拟对比与结果分析

为了验证上述理论，我编写了模拟代码 `iir_transform_methods.py`。
设定采样率 $f_s = 1000\text{ Hz}$（奈奎斯特频率为 $500\text{ Hz}$）。为了放大缺陷，特意设计了一个阶数极低（2阶）、截止频率相对较高（$200\text{ Hz}$）的巴特沃斯滤波器。

![Simulation Result](iir_transform_methods_sim.png)

### 4.1 频域响应对比（图 1）
- **黑虚线**：原始的模拟滤波器，在 $500\text{ Hz}$ 时幅值依然不为 0（大约衰减了不到 20 dB）。
- **红线（冲击响应不变法）**：在低频段它与模拟曲线贴合很好，但在接近 $500\text{ Hz}$（Nyquist频率）时，由于高于 $500\text{ Hz}$ 的模拟频谱发生了折叠，导致红线明显偏离了黑线（**这就是频谱混叠**），它的高频阻带衰减变差了。
- **蓝线（双线性变换法）**：完美解决了混叠问题，高频衰减更彻底。但在 $200\text{ Hz}$ 以后，它和原始模拟曲线（黑线）的形状并不一样，这就是非线性映射带来的“频率扭曲”，但在预畸变的作用下，它们都在 $200\text{ Hz}$ 处精准交汇于 -3 dB。

### 4.2 时域冲击响应对比（图 2）
- **黑线**：连续的模拟冲击响应波形 $h_a(t)$。
- **红点（冲击响应不变法）**：每一个红点都**严丝合缝地落在了黑线上**。它完全继承了模拟滤波器的时域动态特性。
- **蓝星（双线性变换法）**：明显偏离了黑线。双线性变换法只在频域有效，牺牲了时域波形的一致性。

## 5. 总结
- **冲击响应不变法**：保时域波形，保频率线性关系，但有频谱混叠，适用范围窄。
- **双线性变换法**：彻底消除混叠，适用所有滤波器类型，但会扭曲频率轴和破坏时域波形。它是目前工业界设计 IIR 滤波器最常用的主流方法。
