2. 信噪比数学表达:线性与对数、功率比与幅度比、单位换算

各位工程师,大家好。今天我们聊聊信噪比的数学表达。说实话,很多刚入行的朋友一看到 dB 就头大,觉得是个玄学。其实说白了,它就是一把尺子,用来量信号和噪声谁大谁小。

我个人习惯,拿到一个系统,第一件事就是算它的信噪比。为什么?因为 SNR 直接决定了你的系统能跑多快、传多远、误码率多低。今天这一章,我们就把 SNR 的数学底裤扒干净。

2.1 线性信噪比:最原始的定义

信噪比最原始的定义,就是信号功率除以噪声功率。数学上写起来很简单:

SNR_linear = P_signal / P_noise

这里 P_signal 是信号的平均功率,P_noise 是噪声的平均功率。单位是“倍”,没有量纲。比如 SNR = 1000,意思就是信号功率是噪声功率的 1000 倍。

我在项目中遇到过一种情况:有人直接用电压比代替功率比,结果算出来的 SNR 差了 3 dB。嗯,这里要特别注意——功率比和幅度比不是一回事。

2.2 功率比 vs 幅度比:一个容易踩的坑

为什么会有这个坑?因为在实际测量中,我们经常用示波器看电压波形,而不是直接测功率。但 SNR 的定义是基于功率的。如果你手里只有电压值,就得做一次转换。

假设信号电压幅度为 V_s,噪声电压有效值为 V_n,那么:

P_signal ∝ V_s²
P_noise ∝ V_n²
SNR_linear = (V_s²) / (V_n²) = (V_s / V_n)²

也就是说,功率比等于幅度比的平方。这个关系在转换到 dB 时特别重要。

⚠️ 我曾经踩过的坑: 在调试一个射频接收机时,我用频谱仪读出了信号和噪声的电压幅度,直接相除得到 100,就以为 SNR 是 100 倍(20 dB)。结果实际系统性能远低于预期。后来才发现,电压比 100 对应功率比 10000,也就是 40 dB。这一下差了 20 dB,整个链路预算全错了。

2.3 对数表示:为什么用 dB?

你想想看,信号功率可能是 1 mW,噪声功率可能是 1 pW,比值是 10⁹。这么大的数字,写起来麻烦,画图也难看。所以工程师们发明了对数表示法——dB。

定义式:

SNR_dB = 10 × log10(P_signal / P_noise)

如果用的是幅度比,公式要变一下:

SNR_dB = 20 × log10(V_signal / V_noise)

为什么一个是 10 倍,一个是 20 倍?因为 log(V²) = 2 × log(V),所以 10 × 2 = 20。这个关系一定要记牢,面试经常考。

💡 快速心算技巧:
  • 功率比 2 倍 → 3 dB
  • 功率比 10 倍 → 10 dB
  • 功率比 100 倍 → 20 dB
  • 功率比 1000 倍 → 30 dB
记住 3 dB 对应 2 倍,10 dB 对应 10 倍,其他都可以组合出来。

2.4 常见单位换算对照表

为了方便大家查表,我整理了一份常用换算表。建议你收藏,做链路预算时直接拿来用。

功率比 (线性) dB 值 幅度比 (线性) 典型场景
1 0 dB 1 信号等于噪声
1.26 1 dB 1.12 勉强可辨
2 3 dB 1.41 半功率点
4 6 dB 2 良好通信
10 10 dB 3.16 典型接收机灵敏度
100 20 dB 10 高质量链路
1000 30 dB 31.62 极低噪声系统
📌 我的习惯: 做系统设计时,我全程用 dB 计算。加减 dB 比乘除线性值快得多,也不容易出错。比如级联系统的总 SNR,用 dB 就是简单的加减法。

2.5 知识结构图:信噪比表达体系

下面这张图总结了信噪比表达的核心逻辑,从定义到应用一目了然。

信噪比表达体系结构图 信噪比表达体系 SNR 定义 线性表示 (倍) 对数表示 (dB) 功率比 P_s/P_n 幅度比 (V_s/V_n)² 10·log10(功率比) 20·log10(幅度比) 应用:链路预算 · 灵敏度分析 · 误码率计算 ⚠️ 关键:功率比 = (幅度比)²,dB 计算用加减法 线性值乘除 ↔ dB 值加减

2.6 实战:从测量值到 SNR 的完整计算

假设你在实验室用频谱仪测到一个信号:信号功率 -70 dBm,噪声底噪 -90 dBm。问 SNR 是多少?

这里有个小技巧:dBm 是功率的绝对单位,但 SNR 是相对值。两个 dBm 值相减,结果就是 dB。

SNR_dB = P_signal(dBm) - P_noise(dBm)
       = (-70) - (-90)
       = 20 dB

20 dB 对应线性功率比 100 倍。如果换成幅度比,就是 10 倍。

反过来,如果系统要求 SNR 至少 30 dB,噪声底噪是 -80 dBm,那么信号功率至少需要:

P_signal_min(dBm) = SNR_required(dB) + P_noise(dBm)
                  = 30 + (-80)
                  = -50 dBm

这就是链路预算的基本操作。我每次做接收机设计,都会在 Excel 里拉一张这样的表,把所有节点的功率、噪声、增益列出来,逐级算 SNR。

📊 级联系统 SNR 计算要点:
  • 每一级都会引入噪声,总 SNR 低于最差的那一级
  • 前级噪声系数对总 SNR 影响最大(Friis 公式)
  • 用 dB 计算时:总 SNR = 输入 SNR - 总噪声系数

2.7 几个容易混淆的单位

做通信系统,你还会碰到这些单位:

单位 含义 与 SNR 的关系
dBm 相对于 1 mW 的功率 SNR(dB) = P_s(dBm) - P_n(dBm)
dBW 相对于 1 W 的功率 0 dBW = 30 dBm
dBi 天线增益(各向同性参考) 与 SNR 正相关
dBc 相对于载波功率 常用于相位噪声指标

我个人建议,做系统设计时统一用 dBm 表示功率,用 dB 表示比值。混用单位是新手最容易犯的错误,我见过有人把 dBm 和 dB 直接相加,结果整个链路预算全乱套。

⚠️ 绝对不要做的事:
  • 不要把 dBm 和 dB 混为一谈(一个是绝对功率,一个是比值)
  • 不要把线性功率比和幅度比搞混(差一个平方)
  • 不要忘记 3 dB 对应 2 倍功率,不是 2 倍电压

好了,这一章的内容就到这里。信噪比的数学表达是后续所有计算的基础,把这些概念吃透,后面的链路预算、调制性能分析、编码增益计算都会轻松很多。