窗函数

窗函数（window function）在信号处理中是指一种除在给定区间之外取值均为0的实函数。譬如：在给定区间内为常数而在区间外为0的窗函数被形象地称为矩形窗。

任何函数与窗函数之积仍为窗函数，所以相乘的结果就像透过窗口“看”其他函数一样。窗函数在频谱分析、滤波器设计、波束形成、以及音频数据压缩（如在Ogg Vorbis音频格式中）等方面有广泛的应用。

## 频谱分析

从理论上可以得出函数 $\cos(\omega t)\,$ 的傅立叶变换除了在频率 $\pm \omega\,$ 之外处处为 0。但是许多其它的函数或者波形数据并没有这样方便的闭式变换，或者是我们只对某一时间范围内的频谱数据感兴趣，在这种情况下，就需要对有限时间范围的波形进行傅立叶变换或者其它类似的变换。通常通过波形与一个窗函数的乘积来表示。但是，包括矩形窗在内的所有窗函数都会对待测频谱产生影响。

### 离散时间信号

当输入波形是采样信号而非连续信号时，傅立叶分析通常对信号应用窗函数并用离散傅立叶变换。但是离散傅里叶变换得到的频谱只是离散时间傅里叶变换频谱的一个粗糙采样。上图是正弦信号应用矩形窗后傅立叶频谱的一部分。位于横轴0点位置的是正弦信号真实频谱，其余频谱均为谱泄漏。频率单位为“DFT bins”（DFT 量化单位）即这些整数值是DFT采样得到的频率。所以该图显示了这样一种情况，正弦信号的实际频率正好与DFT的采样频率一致，并且频谱的最大值通过采样得到。采样错过最大值时的测量误差被称为“扇形损失”（名称源于顶点的形状）。但是这种状况下最有趣的是那些与实际频谱相一致的即值为零的那些点。这种情况下，DFT创造了没有泄露的假象。尽管不如本例这样，泄露是DFT中人为引入的也是普遍误解。但是既然任何窗函数都有泄露，那些表面上的不存在泄露才是人为造成的。

### 总泄漏

概念的分辨率和动态范围往往是有些主观的，这取决于用户的实际意图。但他们也往往是高度相关，与总泄漏，这是量化的。它通常表示为一个等效带宽，B认为它作为再分配DTFT成长方形的高度等于频谱宽度 B的最大和泄漏的，更大的带宽。它有时被称为噪声等效带宽或等效噪声带宽，因为它是成正比的平均功率将每个登记的DFT并当输入信号包含随机噪声组件（或者只是随机噪声）。图的功率谱，平均随着时间的推移，通常显示一个单位的噪声底，造成这种效果。噪声的高度层是成正比的，所以乙两个不同的窗口功能可以产生不同的噪音楼层。

### 处理增益与损耗

<image>

在信号处理中，透过某些操作，可以利用信号和噪声之间性质的差异，来提高信号某些方面的品质。当某个正弦信号随机地叠加的破坏性噪声，频谱分析能区别的信号与噪声的分量，往往能使检测信号的某些特性更容易，如测量振幅和频率。比如说，若将大多数的正弦信号能量集中于一个频率附近，并将噪声均匀分布，能有效的改善信噪比（signal to noise ratio, SNR）。处理增益通常用来描述SNR改善的程度。频谱分析的处理增益取决于窗函数的噪声带宽（B）和潜在的扇形损失。这些效果可能部分抵消，因为窗函数有最少的扇形自然有最大的渗漏。

右图描述了三种不同的窗函数对相同的数据的影响。此数据包含两个相等强度的正弦信号与外加的噪声。两正弦波的频率被定为其中一个无扇形而另一个有最大扇形。两个正弦信号在Hann Window下都造成比Blackman–Harris window更少的信噪比损耗。

一般情况下，这防止我们在低动态范围的应用采用高动态范围的窗。

### 不应使用窗函数的应用

在一些应用中，最好不使用窗函数。例如：

- 在冲击模型测试中，当分析暂态信号，如重锤打击产生的激发信号（脉冲激发技术）时，大部分能量位于记录的开头。若使用非矩形的窗，会无谓的减弱大部分能量和传播频率响应。
- 上述的一种推广，当测量自窗口信号，如脉冲，冲击响应，正弦丛发，连续变频丛发，噪声丛发时，这样的信号使用模态分析。在这种情况下应用窗函数只会恶化信噪比。
- 测量一个周期T的虚拟随机噪声（PRN）激发信号，并使用相同的记录周期T时。PRN信号是周期性的，因此，该信号的所有频谱分量将会与FFT区间中心重合而无泄漏。
- 当测量被锁定于采样频率的重复信号，例如在测量的振动频谱分析的轴对准，轴承，发动机，变速器等的故障诊断。由于信号是重复的，所有的频谱能量被限制到基本的重复频率的整数倍。
- 在正交分频多工(OFDM)接收器中，输入信号不经窗函数，被直接乘以FFT。频率子载波（也称为符号）被设计为恰好对齐FFT频率区间。一个Cyclic prefix通常添加到所传输的信号，使得肇因于多径的频率选择性衰落可用圆周折积模拟，从而避免了在OFDM中相当于频谱泄漏的符号间干扰。

## 典型的窗函数

### 矩形窗(Rectangular)

每个DFT过程都被窗所修饰限制，因为一个有限时间序列等效上是由无限长时间序列乘上一长度与资料区块长度相同(NΔt)的矩形窗。在矩形窗的例子中，其DFT是由讯号本身的DFT及一矩形的DFT做回旋所产生，然而矩形窗属于时间变量的零次幂窗。矩形窗使用最多。

习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中，缺点是旁瓣较高，并有负旁瓣，导致变换中带进了高频干扰和泄漏，甚至出现负谱现象。

<image>

$$w(n) = 1\,$$

### 高斯窗

<image>

$$w(n)=e^{-\frac{1}{2} \left ( \frac{n-(N-1)/2}{\sigma (N-1)/2} \right)^{2}}$$

$$\sigma \le \;0.5\,$$

高斯函数经由傅立叶转换得到的结果，仍然是高斯函数。由于高斯函数会向无限大与负无限大处无限延伸，因此一般都会设定一个截断高斯函数的阈值，或是将高斯函数搭配其他两端数值为零的函数。

另外，由于取高斯函数的对数会产生抛物曲线，此性质可用于频率估测的近二次内插中。

### 受限高斯窗

<image>

受限高斯窗在给定时间宽度 Nσt 下，将产生最小可能的方均根频率宽度 σω，并最佳化方均根时频带宽的乘积。

### 近似受限高斯窗

<image>

近似受限高斯窗，在给定时间宽度 Nσt 下，可由下方的式子进一步近似：

$$w(n) = G(n) - \frac{G(-\tfrac{1}{2})[G(n + N) + G(n - N)]}{G(-\tfrac{1}{2} + N) + G(-\tfrac{1}{2} - N)}$$

其中 Gaussian 定义为:

$$G(x) = e^{- \left(\cfrac{x - \frac{N-1}{2}}{2 N \sigma_t}\right)^2}$$

### Hamming窗与Hann窗

$$w(n) = a_0 - \underbrace{(1-a_0)}_{a_1}\cdot \cos\left( \tfrac{2 \pi n}{N - 1} \right),\quad 0\le n \le N-1,$$

当 $a_0 = 0.53836$，称作 Hamming窗；当 $a_0 = 0.5$ 则叫作 Hann窗。

#### Hann窗

<image>

$$w(n)= 0.5\; \left(1 - \cos \left ( \frac{2 \pi n}{N-1} \right) \right)$$

Hann窗有时也称为 "Hanning" 窗（“汉宁窗”），以与 Hamming 窗的名称类似。但是这是不对的，因为这两个窗是分别根据 Julius von Hann 和 Richard Hamming 的名字命名的。

Hann窗又称升余弦窗。Hann窗可以看作是3个矩形时间窗的频谱之和，或者说是 3个 sinc(t) 型函数之和，而括号中的两项相对于第一个谱窗向左、右各移动了π/T，从而使旁瓣互相抵消，消去高频干扰和漏能。

从减小泄漏观点出发，Hann窗优于矩形窗。但Hann窗主瓣加宽，相当于分析带宽加宽，频率分辨力下降。

#### Hamming窗

<image>

$$w(n)=0.53836 - 0.46164\; \cos \left ( \frac{2 \pi n}{N-1} \right)$$

如果我们将 $a_0$ 设为接近 0.53836 的数值，或是更精确来说是 25/46，便会得到Hamming窗，而设定这个数值的用意，是在频率为 5π/(N − 1) 处产生零交会处(zero-crossing)，使原先Hann窗的第一个旁瓣(sidelobe)可以被大幅消除，产生只有Hann窗 1/5 高度的旁瓣。

### Bartlett窗（端点值为0）

<image>

$$w(n)=\frac{2}{N-1}\cdot\left(\frac{N-1}{2}-\left |n-\frac{N-1}{2}\right |\right)\,$$

### 三角形窗（端点值非0）

<image>

$$w(n)=\frac{2}{N}\cdot\left(\frac{N}{2}-\left |n-\frac{N-1}{2}\right |\right)\,$$

### Bartlett-Hann窗

<image>

$$w(n)=a_0 - a_1 \left |\frac{n}{N-1}-\frac{1}{2} \right| - a_2 \cos \left (\frac{2 \pi n}{N-1}\right )$$

$$a_0=0.62;\quad a_1=0.48;\quad a_2=0.38\,$$

### Blackman窗

<image>

$$w(n)=a_0 - a_1 \cos \left ( \frac{2 \pi n}{N-1} \right) + a_2 \cos \left ( \frac{4 \pi n}{N-1} \right)$$

$$a_0=0.42;\quad a_1=0.5;\quad a_2=0.08\,$$

根据一般习惯，Blackman窗所设定的数值并非完全精确(α = 0.16, a0 = 0.42, a1 = 0.5, a2 = 0.08)，而是近似于精确Blackman的数值(a0 = 7938/18608 ≈ 0.42659, a1 = 9240/18608 ≈ 0.49656, a2 = 1430/18608 ≈ 0.076849)。

如此的数值设定，其用意是在第三个及第四个旁瓣位置产生零交会处(zero-crossing)。

### Kaiser窗

<image>

<image>

$$w(n)=\frac{I_0\Bigg (\pi\alpha \sqrt{1 - (\begin{matrix} \frac{2 n}{N-1} \end{matrix}-1)^2}\Bigg )} {I_0(\pi\alpha)}$$

### 低分辨率（高动态范围）窗

#### Nuttall窗（一阶导数连续）

<image>

$$w(n)=a_0 - a_1 \cos \left ( \frac{2 \pi n}{N-1} \right)+ a_2 \cos \left ( \frac{4 \pi n}{N-1} \right)- a_3 \cos \left ( \frac{6 \pi n}{N-1} \right)$$

$$a_0=0.355768;\quad a_1=0.487396;\quad a_2=0.144232;\quad a_3=0.012604\,$$

当我们考虑 n 为一实数，Nuttall窗函数及其一次导数在任意处皆为连续，且当 n = 0 时的数值为 0，而Blackman-Nuttall窗及Blackman-Harris窗，在 n = 0 处则有一微小的正值。

#### Blackman-Nuttall窗

<image>

$$w(n)=a_0 - a_1 \cos \left ( \frac{2 \pi n}{N-1} \right)+ a_2 \cos \left ( \frac{4 \pi n}{N-1} \right)- a_3 \cos \left ( \frac{6 \pi n}{N-1} \right)$$

$$a_0=0.3635819; \quad a_1=0.4891775; \quad a_2=0.1365995; \quad a_3=0.0106411\,$$

#### Blackman-Harris窗

<image>

$$w(n)=a_0 - a_1 \cos \left ( \frac{2 \pi n}{N-1} \right)+ a_2 \cos \left ( \frac{4 \pi n}{N-1} \right)- a_3 \cos \left ( \frac{6 \pi n}{N-1} \right)$$

$$a_0=0.35875;\quad a_1=0.48829;\quad a_2=0.14128;\quad a_3=0.01168\,$$

Blackman-Harris窗是Hamming窗家族的一般化，借由加上更多位移sinc函数而产生，并能够减低旁瓣的影响。

#### 平顶窗

<image>

$$w(n)=a_0 - a_1 \cos \left ( \frac{2 \pi n}{N-1} \right)+ a_2 \cos \left ( \frac{4 \pi n}{N-1} \right)- a_3 \cos \left ( \frac{6 \pi n}{N-1} \right)+a_4 \cos \left ( \frac{8 \pi n}{N-1} \right)$$

$$a_0=1;\quad a_1=1.93;\quad a_2=1.29;\quad a_3=0.388;\quad a_4=0.032\,$$

平顶窗在部分区域为负值，并且在频域中具有较小的扇形损失。该特性有利于测量正弦频率分量，但具有较低频率精准度以及高噪声频带等缺点。我们可以利用低通滤波器的设计方法产生平顶窗函数。

### 其他窗函数

#### 正弦窗

<image>

$$w(n) = \sin\left(\frac{\pi n}{N-1}\right) = \cos\left(\frac{\pi n}{N-1} - \frac{\pi}{2}\right)$$

正弦窗有时也称作余弦窗，因为其函数可同时由正弦或余弦函数的方式表示。

正弦窗的自相关函数可产生波曼窗(Bohman window)。

#### 指数正弦/余弦窗

此类别的窗具有以下形式：

$$w(n) = \sin^\alpha\left(\frac{\pi n}{N-1}\right) = \cos^\alpha\left(\frac{\pi n}{N-1} - \frac{\pi}{2}\right).$$

矩形窗(α = 0)、正弦窗、以及Hann窗(α = 2)皆属于这类窗的一员。

#### 多夫-柴比雪夫窗

$$\begin{align} W_0(k) &= \frac{\cos \{N \cos^{-1}[ \beta\cos(\frac{\pi k}{N})]\} }{\cosh [N \cosh^{-1}(\beta)]}\\ \beta &= \cosh [\frac{1}{N} \cosh^{-1}(10^\alpha)], \end{align}$$

α参数控制了窗口的尖细程度，α也是旁瓣准尉的对数，因此α=2.0表示比主瓣低了两个度(decades)或是-40dB。窗口的特征是主瓣的背景泄漏在转换后的输出唯一常数振福。对一个已给定泄漏等级，当主瓣的宽度为最小时，这个窗口是最佳化。

另外优点在于，当只有小数目输入讯号取样点时，可用来做小转换，这个窗口在主瓣附近提供很好的能见度。

<image>