使用 DFT 计算信噪比

在前一期的文章中,我们介绍了一种滤波函数,它使用几个振幅最大的傅立叶频率(以下简称分量)(k)。接下来的问题是:我们能使用多少个最小分量来捕捉原始信号的重要本质(又称信息)?

为了回答这个问题,我们引入了信号处理和信息理论中使用的一种新测量方法,即信噪比(SNR)。信噪比将所需信号的电平与背景噪声的电平进行比较。

本期,我们将从傅立叶变换的三角表示法入手,计算每个傅立叶频率/分量所贡献的平均功率(又称功率密度),并估算一个通用滤波器函数的信噪比。接下来,我们将考虑低通滤波器(LPF)--一种通过频率低于所选截止频率的信号的滤波器--并研究信噪比随截止频率增加而发生的变化,我们还将推导出计算信噪比的近似公式。最后,我们将讨论实际应用中常用的信噪比值,以及如何使用它们来设置滤波器的截止频率。

我为什么要关心?

与我们的 previous article 本文将从另一个角度探讨傅立叶变换。我们希望您能从中获得或刷新您的直觉,并强化这些重要概念。

背景介绍

信噪比的定义如下:

$$\boldsymbol{}\textrm{SNR} = \frac{P_{signal}}{P_{noise}}$$

$${\rm{SN}}{{\rm{R}}_{{\rm{dB}}}} = 10 \times {\log _{10}}\left( {\frac{{{P_{signal}}}}{{{P_{noise}}}}} \right) = 10 \times {\log _{10}}\left( {{\rm{SNR}}} \right)$$

地点:

  • ${P_{signal}}$ = 所需信号的平均功率。
  • ${P_{noise}}$ = 背景噪声的平均功率。
  • ${\rm{SN}}{{\rm{R}}_{{\rm{dB}}}}$ = 信噪比,以分贝为单位。

根据定义,背景噪声 (N) 是随机的(不确定的),其均值为零,因此信噪比表示如下:

$$SNR = \frac{{{P_{signal}}}}{{E[{N^2}]}}$$

地点:

  • E[.] = 期望值运算符

请注意,背景噪声的平均功率的定义与非确定性(随机)输入信号(Q)的方差完全相同,因此我们可以将平均功率表示为 $E[{Q^2}]$。

$$SNR = \frac{{E[{Q^2}]}}{{E[{N^2}]}} = \frac{{s_Q^2 + {{\bar Q}^2}}}{{s_N^2}}$$

由于输入信号可能不具有零均值,因此分子中出现了${\bar Q^2}$。需要注意的是,信噪比是输入方差与噪声方差的比值。

离散傅立叶变换

给定一个有限样本数据集 ${ {x_t}}$,大小为 $N$,我们可以将时间 $t$ 处的值(您指的是时间 $t$ 吗?)表示为对应的离散傅里叶变换 $\{ {A_i}\angle {\phi _i}\} _{i = 0}^{N - 1}$,具体如下:

$$x(t) = \frac{1}{N}\left( {{A_o} + \sum\limits_{j = 1}^{N - 1} {{A_1}\cos (j \times \omega \times t + {\phi _j})} } \right)$$

$$\omega = \frac{{2\pi \times {f_s}}}{N}$$

地点:

  • N = 样本数据集中的观测值(又称数据点)数量。
  • {${A_o},{A_1},...,{A_{N - 1}}$} = 的振幅。
  • $\{ {\phi _1},{\phi _2},..,{\phi _{N - 1}}\}$ = 的相位角(以弧度为单位)。
  • ${f_s}$ = 采样率或频率。
  • $\omega$ = DFT 的基频或主要辐射频率。

请注意,DFT 围绕 N/2 个分量(或 N/2+1 个分量,如果 N 是偶数)对称,并且每 N 个分量重复一次(即,它是循环的,如图所示)。

这是离散傅里叶变换 (DFT) 振幅的示例图。该图显示了围绕 T/2 的对称性和长度等于 T 的周期性。

为了本文的目的,并且为了避免区分奇数和偶数大小的样本数据,我们在下面的推导中使用完整的数值范围 $\{ 0,1,2,.., N - 1\}$。

为什么在这里使用 DFT?

上述表达式中的余弦函数相互正交(不相关),因此,计算以这些余弦函数的加权和表示的信号的均值和方差就大大简化了。

我们来计算信号的平均值:

$$\begin{aligned} E[x(t)] &= E\left[ {\frac{1}{N}\left( {{A_o} + \sum\limits_{j = 1}^{N - 1} {{A_1}\cos (j \times \omega \times t + {\phi _j})} } \right)} \right] \\ &= \frac{1}{N} \times \left( {{A_o} + \sum\limits_{j = 1}^{N - 1} {{A_1}E[\cos (j \times \omega \times t + {\phi _j})]} } \right) \\ &= \bar X = \frac{{{A_o}}}{N}\end{aligned} $$

现在,让我们用数据点的值减去平均值:

$$x(t) - \bar X = \frac{1}{N}\sum\limits_{j = 1}^{N - 1} {{A_1}\cos (j \times \omega \times t + {\phi _j})} $$

输入信号的方差(${s^2}$)定义如下:

$$\begin{aligned} {{\rm{s}}^2} &= E[{(x(t) - \bar x)^2} \\ & = \frac{1}{{{N^2}}}E\left[ {{{\left( {\sum\limits_{j = 1}^{N - 1} {{A_j}\cos (j \times \omega \times t + {\phi _j})} } \right)}^2}} \right] \end{aligned}$$

让我们展开这个表达式:

$$\begin{aligned}
\rm{s}^2 = & \frac{1}{{{N^2}}} \times \left( {\sum\limits_{j = 1}^{N - 1} {A_j^2E\left[ {{{\cos }^2}(j \times \omega \times t + {\phi _j})} \right]} } \right) +\\
& \frac{2}{{{N^2}}} \times \left( {\sum\limits_{j = 1}^{N - 2} {\sum\limits_{h = j + 1}^{N - 1} {{A_j}{A_h} E\left[ {\cos (j \times \omega \times t + {\phi _j})\times \cos (h \times \omega \times t + {\phi _h})} \right]} } } \right)
\end{aligned}$$

此外,$s^2$ 可以表示为:

$${s^2} = \frac{1}{{{N^2}}} \times \left( {\sum\limits_{j = 1}^{N - 1} {A_j^2E[{{\cos }^2}(j \times \omega \times t + {\phi _j})]} } \right) = \frac{1}{{{N^2}}}\sum\limits_{j = 1}^{N - 1} {\frac{{A_j^2}}{2}}$$

总之,输入信号的方差可以表示为

$${s^2} = \frac{1}{{2{N^2}}} \times \sum\limits_{j = 1}^{N - 1} {A_j^2}$$

因此,每个DFT分量对信号方差(或功率)的贡献为$\frac{{{A^2}}}{{2{N^2}}}$。

过滤器功能

对于任何给定的滤波函数,我们都有两个信号: 输入信号 $\{ {I_t}\}$ 和滤波后的输出信号 (${O_t}$)。

该图展示了滤波器的功能框图。

背景噪音只是两个信号之间的差值:

$$\{ {N_t}\} = \{ {O_t} - {I_t}\}$$

离散傅里叶变换(DFT)对于输入信号和滤波后输出信号分别为:$ {A_i}\angle {\phi _i}\} _{i = 0}^{N - 1}$ 和 $\{ {B_i}\angle {\theta _i}\} _{i = 0}^{N - 1}$,分别表示,而噪声信号的DFT(${C_i}\angle {\gamma _i}\} _{i = 0}^{N - 1}$)等于两个信号DFT之间的差值。

$${C_i}\angle {\gamma _i} = {A_i}\angle {\phi _i} - {B_i}\angle {\theta _i}$$

请注意,${C_i}\angle \gamma$ 的计算涉及复数,因此需要同时减去实部和虚部。

让我们来分析一个简单的滤波器函数,它不影响频率分量的相位角,只影响幅度,此时 ${\gamma _i} = {\phi _i} = {\theta _i}$ 且 ${C_i} = ({A_i} - {B_i})\angle {\phi _i}$

$$\begin{aligned} SNR =& \frac{{s_O^2 + {{\bar O}^2}}}{{s_N^2}} = \frac{{\frac{{B_o^2}}{{{N^2}}} + \frac{1}{{2{N^2}}} \times \sum\limits_{j = 1}^{N - 1} {B_j^2} }}{{\frac{1}{{2{N^2}}} \times \sum\limits_{j = 1}^{N - 1} {C_j^2} }} \\ =& \frac{{2B_o^2 + \sum\limits_{j = 1}^{N - 1} {B_j^2} }}{{\sum\limits_{j = 1}^{N - 1} {({A_j} - {B_j}} {)^2}}} \\ =& \frac{{2B_o^2 + \sum\limits_{j = 1}^{N - 1} {B_j^2} }}{{\sum\limits_{j = 1}^{N - 1} {A_j^2} + \sum\limits_{j = 1}^{N - 1} {B_j^2} - 2\sum\limits_{j = 1}^{N - 1} {{A_j}{B_j}} }}\end{aligned}$$

就是这样!我们只需利用输入和输出信号的 DFT 振幅,就能计算出信噪比。

从现在起,让我们考虑奇数大小的样本 (N)。利用 DFT 的对称性,我们可以只使用频谱的前半部分,信噪比可以表示如下:

$$\begin{aligned} SNR =& \frac{{2B_o^2 + 2\sum\limits_{j = 1}^{N/2} {B_j^2} }}{{2\sum\limits_{j = 1}^{N/2} {A_j^2} + 2\sum\limits_{j = 1}^{N/2} {B_j^2} - 4\sum\limits_{j = 1}^{N/2} {{A_j}{B_j}} }} \\ =& \frac{{B_o^2 + \sum\limits_{j = 1}^{N/2} {B_j^2} }}{{\sum\limits_{j = 1}^{N/2} {A_j^2} + \sum\limits_{j = 1}^{N/2} {B_j^2} - 2\sum\limits_{j = 1}^{N/2} {{A_j}{B_j}} }}\end{aligned}$$

低通滤波器

对于低通滤波器(LPF)来说,随着截止频率的增加,信噪比也会增加,因为它允许更多的频率成分通过。

LPF(K) 的输出 DFT 表示如下

$${B_j} = \left\{ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{{A_j}}&{j < K}
\end{array}}\\
{\begin{array}{*{20}{c}}
0&{j \ge K}
\end{array}}
\end{array}} \right.$$

信噪比进一步简化:

$$SNR(K) = \frac{{A_o^2 + \sum\limits_{j = 1}^{K - 1} {A_j^2} }}{{\sum\limits_{j = K}^{N/2} {A_j^2} }}$$

让我们来看看在滤波器中允许多一个频率分量(比如 K 分量)通过时的边际变化:

$$\begin{aligned}{\rm{SNR}}(K + 1) &= \frac{{A_o^2 + \sum\limits_{j = 1}^{K - 1} {A_j^2} + A_K^2}}{{\sum\limits_{j = K}^{N/2} {A_j^2} - A_K^2}} \\ &= \frac{{\left( {A_o^2 + \sum\limits_{j = 1}^{K - 1} {A_j^2} } \right) \times \left( {1 + \frac{{A_K^2}}{{A_o^2 + \sum\limits_{j = 1}^{K - 1} {A_j^2} }}} \right)}}{{\sum\limits_{j = K}^{N/2} {A_j^2 \times \left( {1 - \frac{{A_K^2}}{{\sum\limits_{j = K}^{N/2} {A_j^2} }}} \right)} }}\\ &= SNR(K) \times \frac{{\left( {1 + \frac{{A_K^2}}{{A_o^2 + \sum\limits_{j = 1}^{K - 1} {A_j^2} }}} \right)}}{{\left( {1 - \frac{{A_K^2}}{{\sum\limits_{j = K}^{N/2} {A_j^2} }}} \right)}}\end{aligned}$$

随着滤波器截止频率(即 K)值的增加,分子迅速接近 1.0;因此,我们可以将信噪比公式近似计算如下:

$${\rm{SNR(K + 1)}} \approx \frac{{{\rm{SNR(K)}}}}{{1 - A_K^2/\sum\limits_{j = K}^{N/2} {A_j^2} }}$$

$$\frac{{{\rm{SNR(K + 1)}}}}{{{\rm{SNR(K)}}}} \approx 1 + \frac{{A_K^2}}{{\sum\limits_{j = K + 1}^{N/2} {A_j^2} }}$$

Using the formula, we can calculate the SNR:

$$SNR(1) = \frac{{A_o^2}}{{\sum\limits_{j = 1}^{N/2} {A_j^2} }}$$

$$SNR(2) = SNR(1) \times \left( {1 + \frac{{A_1^2}}{{\sum\limits_{j = 2}^{N/2} {A_j^2} }}} \right)$$

$$SNR(3) = SNR(2) \times \left( {1 + \frac{{A_2^2}}{{\sum\limits_{j = 3}^{N/2} {A_j^2} }}} \right)$$

$$SNR(M) = SNR(M - 1) \times \left( {1 + \frac{{A_{M - 1}^2}}{{\sum\limits_{j = M}^{N/2} {A_j^2} }}} \right)$$

LPF 截止频率

在解决低通滤波器(LPF)截止频率问题之前,我们需要先确定一个目标信噪比(SNR)。什么样的SNR目标值是合适的?首先,任何大于1(或${\rm{dB}} > 0$)的值都表明信号功率大于背景噪声。

为了获得最佳效果,我们建议将信噪比(SNR)值设置为32(即${\rm{dB}} \ge 15$)或更高。

现在,我们可以确定一个最小截止频率,使信噪比值最接近 32。

结论

在本文中,我们使用低通滤波器函数演示了输出(滤波)信号与输入信号之间信噪比的计算。我们假设两个信号之间的任何差异都只是背景噪声。此外,我们对原始信号一无所知,而是使用滤波后的输出信号作为替代。

您可以将本文中使用的相同原理应用于不同的筛选函数。公式可能略有不同,但原理是一样的。

  附件

评论

登录写评论。

这篇文章有帮助吗?
4 人中有 4 人觉得有帮助