最近在梳理通信原理课程里的信号分析章节,发现“确定信号、随相信号、起伏信号”这组概念,不仅是考试卷子上的高频考点,更直接决定了接收机到底该用相干检测还是包络检波、门限电平该按什么标准来设。很多刚接触通信系统的同学,容易把这三种信号混为一谈,或者只记住公式却说不清它们各自对应什么物理场景,等到做仿真或者看实测数据时就懵了。
这篇文章就用工程视角重新把三类信号拆开讲一遍。内容包括三种信号的数学建模差异、统计特性、接收端检测策略,以及我在实际仿真和系统联调中踩过的一些坑。无论是准备考研复试、做课设,还是刚入门软件无线电想搞懂接收链路,都可以参考。
1. 三种信号的本质区别与工程定位
1.1 确定信号:教科书里的“模范生”
确定信号就是那种可以用明确数学表达式写出来的信号,比如s(t) = A cos(2πft + φ0)。只要给定了时间 t,信号的瞬时值就是唯一确定的,没有半点随机性。正弦波、方波、矩形脉冲、chirp 信号,只要起始相位已知、幅度已知,全都属于这一类。
这类信号在分析上最舒服,因为频谱、能量、功率都可以精确求解。但工程里真正“完全确定”的信号其实不多——发射机自己产生的本振信号、经过精确校准的测试序列、有线信道里的基带码型,这些可以近似看成确定信号。它最大的价值是作为分析起点:先把确定信号搞明白,再往里加随机相位、随机幅度,才能一步步逼近真实信道。
我当年做课设的时候,老师第一句话就是:“先把发射端和接收端用确定信号跑通,再换随相信号、起伏信号。”这句话后来在实际项目中验证过无数次——确定信号是用来验证系统功能正确性的,随机信号才是用来验证系统性能的。
1.2 随相信号:相位未知时的现实妥协
随相信号的典型特征是:幅度确定,相位随机。数学上通常写为:
s(t) = A cos(2πft + θ)其中 θ 是在 [0, 2π) 上均匀分布的随机变量。也就是说,这个信号的频率、幅度我都知道,但我不知道它从哪个相位开始。
为什么会遇到这种情况?最典型的就是非相干接收。比如ASK、FSK信号的包络检波,接收端不提取载波相位,直接对包络做判决。此时信号到达接收端的相位受传播时延、本振相位影响,完全可以建模成均匀分布的随机相位。
生活化类比:确定信号像是录好的磁带,从头播放,哪一秒是哪个音符都清楚;随相信号像是同一盘磁带,但不知道被人按到了哪一段才开始放,你知道歌还是那首歌,只是不知道当前放的进度。幅度不随机,相位随机,这就是随相信号。
1.3 起伏信号:幅度也在波动的“最难缠”对手
起伏信号更进一步:不仅相位随机,幅度同样是随机变量。典型模型是:
s(t) = A(t) cos(2πft + θ)其中 A(t) 服从某种统计分布,最常见的是瑞利分布或者莱斯分布。这种信号对应的是移动通信里的多径衰落、雷达目标回波的起伏、以及各种复杂电磁环境下接收信号的真实形态。
如果说确定信号是舞台剧按剧本演,随相信号是剧本还在但演员忘了从哪句开始,起伏信号就是不仅忘了从哪句开始,麦克风音量还在被人疯狂乱拧。幅度忽大忽小,相位乱七八糟,这才是接收机在真实环境里遇到的常态。
1.4 三类信号对照
| 信号类型 | 幅度 | 相位 | 典型场景 | 检测策略 |
|---|---|---|---|---|
| 确定信号 | 恒定 | 固定已知 | 测试序列、本地参考、有线传输 | 相干检测、匹配滤波 |
| 随相信号 | 恒定 | 随机均匀分布 | 非相干接收的FSK/ASK、突发通信 | 包络检波、能量检测 |
| 起伏信号 | 随机分布 | 随机均匀分布 | 移动衰落信道、雷达起伏目标 | 门限检测、分集接收、统计判决 |
这三类信号在接收端对应的处理方式完全不同。搞清楚它们的统计特性,是设计检测门限和判决准则的前提。
2. 核心数学模型与统计特性拆解
2.1 确定信号的数学表达与功率谱
确定信号的分析工具是傅里叶变换。周期信号用傅里叶级数展开,非周期信号用傅里叶变换得到频谱密度函数。比如单频正弦信号:
s(t) = A cos(ω0t + φ0)它的频谱在 ±ω0 处各有一条谱线,幅度为 A/2。对于脉冲信号,频谱是抽样函数形状,主瓣宽度与脉冲宽度成反比。这个特性直接决定了系统的带宽需求。
功率谱密度这个概念对确定信号是严格的,对随机信号则要用维纳-辛钦定理来定义。我在写仿真代码时,遇到确定信号一般直接 FFT 看频谱;遇到随机信号,就不能直接用单次 FFT 的结果当功率谱了,必须做多帧平均,否则估计出来的谱线抖动严重。这个差异值得新手注意。
2.2 随相信号的联合概率密度与等效窄带过程
随相信号的核心统计量是包络 A 恒定、相位 θ 在 [0, 2π) 均匀分布。它的概率密度函数为:
f(θ) = 1/(2π), 0 ≤ θ < 2π如果把随相信号展开成正交分量形式:
s(t) = X cos(ω0t) - Y sin(ω0t)其中X = A cos θ、Y = A sin θ,当 θ 均匀分布时,X 和 Y 分别服从某种分布,且两者联合分布具有圆对称性。这就是后面推导包络检波输出分布的基础。
实际通信系统里,随相信号往往还要叠加高斯白噪声。噪声通过窄带系统后,可以用同相分量 I 和正交分量 Q 表示。信号加噪声后的包络不再恒定,而是服从广义瑞利分布——也就是莱斯分布。这个结论非常重要,因为非相干检测就是基于对“信号加噪声的包络”进行判决。
2.3 起伏信号幅度的瑞利与莱斯分布推导思路
当接收信号包络由大量独立散射分量叠加时,根据中心极限定理,同相分量和正交分量都近似服从高斯分布,且相互独立、方差相同。此时包络就服从瑞利分布,概率密度为:
f(r) = (r/σ²) exp(-r²/(2σ²)), r ≥ 0其中 σ² 是每个正交分量的方差。瑞利分布的特点是:包络均值不为零,峰值出现在 r = σ 处,但瞬时值可以跌落到接近零。这种“深度衰落”是移动通信中最让工程师头疼的问题。
如果在大量散射分量之外还存在一个主导的直射分量,包络则服从莱斯分布,概率密度为:
f(r) = (r/σ²) exp(-(r² + A²)/(2σ²)) I0(Ar/σ²), r ≥ 0其中 A 是直射分量幅度,I0 是零阶修正贝塞尔函数。莱斯分布比瑞利分布多一个参数 K = A²/(2σ²),称为莱斯因子。K 越大,信道越接近“直射占主导”的情况;K 趋近于零时,莱斯分布退化为瑞利分布。
我实测过一段室内的连续波信号,用直方图统计包络后发现,视距场景下莱斯因子大概在 8~12 dB 左右,拐个弯进了遮挡区之后掉到 3 dB 以下,逐渐向瑞利分布靠近。这个测量方法很简单:采集 IQ 数据,计算瞬时包络,画直方图,再和理论分布曲线对比拟合。建议做信道相关项目的同学都试一次,比单纯看课本印象深得多。
3. 信号检测视角下的三类信号处理策略
3.1 确定信号的最优检测:匹配滤波与相关接收
确定信号的最优检测方法是匹配滤波。匹配滤波器的冲激响应是信号的时间反转共轭:
h(t) = s*(T - t)它的核心思想是让信号在某一时刻的瞬时信噪比最大化。在白噪声背景下,匹配滤波器输出的峰值信噪比等于2E/N0,其中 E 是信号能量,N0 是噪声功率谱密度。
工程实现时,匹配滤波通常等价于相关接收:将接收信号与本地参考信号相乘后积分。相关接收的好处是对波形形状敏感,对噪声有抑制作用。但前提是本地参考信号必须与接收信号“对得上相位”,否则相关结果会大打折扣。
这也是确定信号检测在实际系统中最现实的问题:你手里拿的是确定信号的模型,但真实接收到的信号,相位往往已经漂移了。于是就有了下一节要讲的非相干检测。
3.2 随相信号的非相干检测:包络检波与能量检测
随相信号的相位未知,不能相干检测,只能放弃相位信息,对包络或能量做判决。以二进制ASK为例,发送“1”时接收信号是幅度为 A 的载波加噪声,发送“0”时只有噪声。接收端的处理流程是:带通滤波 -> 平方或取绝对值 -> 低通 -> 采样判决。
包络检波器的输出分布:
- 只有噪声时:包络服从瑞利分布
- 信号加噪声时:包络服从莱斯分布
检测门限选在两条曲线交点的位置附近,可以使总错误概率最小。实际工程里,如果噪声功率稳定,门限常取VT = k * 噪声包络的均方根值,k 通常在 1.5~3 之间,具体取决于对虚警概率的要求。
非相干检测的信噪比损失大约是 1 dB 左右,换来的是接收机复杂度大幅下降。不需要锁相环、不需要导频,电路简单,上电就能跑。这在突发通信、低成本传感器网络里非常吃香。
3.3 起伏信号的门限设计与分集接收
起伏信号的幅度在随机波动,固定门限的性能会很差。因为信号包络可能跌到门限以下,即使实际在发送信号也会被判为无信号,产生“漏检”。对抗起伏最有效的两个手段是:
- 自适应门限:根据实测噪声电平实时调整判决门限,让门限跟着噪声环境走。
- 分集接收:用空间分集、时间分集或频率分集,把多路相关度低的信号合并,降低深度衰落的概率。
两条支路做等增益合并或者最大比合并,衰落深度会显著变浅。我做过一个简单的仿真:单支路瑞利信道,平均信噪比 15 dB 时,瞬时信噪比低于 5 dB 的概率大概还有 4% 左右;用两根天线做最大比合并后,这个概率降到 0.4% 以下。这就是分集的价值,不要只看平均信噪比。
3.4 一个可直接复现的检测概率仿真
下面给一个最简单的 Python 仿真片段,模拟“是否存在信号”的二值检测。H0 假设是只有噪声,H1 假设是确定幅度信号加噪声,接收端用包络检波。
import numpy as np def simulate_detection(snr_db, n_trials=200000): # 参数设置 n = 1 # 每个符号内的采样点数,可以调整 v = np.sqrt(10 ** (snr_db / 10)) # 信号幅度 noise_power = 1.0 vt = 2.2 # 固定门限,实际使用时根据噪声功率换算 # H0:只有噪声,包络服从瑞利分布 noise_real = np.random.normal(0, np.sqrt(noise_power / 2), n_trials) noise_imag = np.random.normal(0, np.sqrt(noise_power / 2), n_trials) env0 = np.sqrt(noise_real**2 + noise_imag**2) # H1:信号加噪声,包络服从莱斯分布 sig_real = v + noise_real sig_imag = noise_imag env1 = np.sqrt(sig_real**2 + sig_imag**2) pfa = np.mean(env0 > vt) pd = np.mean(env1 > vt) return pfa, pd for snr in [0, 3, 6, 9, 12]: pfa, pd = simulate_detection(snr) print(f"SNR={snr:2d} dB, Pfa={pfa:.4f}, Pd={pd:.4f}")运行结果大致是:SNR 0 dB 时检测概率只有 0.3 左右,9 dB 时可以到 0.95 以上。虚警概率由门限和噪声功率之比决定,想压低虚警就得抬高门限,但代价是检测概率跟着降。这个仿真虽然简化掉了频偏、采样偏差等因素,但足够说明“包络检波 + 固定门限”的基本规律。
4. 实际系统中的应用映射与设计取舍
4.1 随相信号在通信系统里的真实踪迹
随相信号模型最常见的应用场景是非相干接收机。蓝牙、LoRa、部分物联网设备里的FSK解调,很多都采用非相干方式。接收端不关心载波绝对相位,只关心频率变化或者包络变化。
另一个典型场景是突发通信。数据帧的起始时刻和载波相位都是随机的,接收端需要做前导检测。前导检测阶段,接收机看到的就是一个“相位未知、幅度可能恒定”的信号,按随相信号模型处理非常合适。
我做软件无线电接收机时,有一个体会:只要接收链路里没有闭环锁相,那所有“单次快拍”的载波相位都应当视为随机量。不要试图去“估计”它然后用相干方式解调,成本高且脆弱,直接用非相干模块更稳。
4.2 起伏信号的现实来源与识别方法
起伏信号在真实环境中的来源主要包括:
- 移动通信中的多径衰落,包络服从瑞利或莱斯分布
- 雷达目标回波起伏,对应不同波动模型
- 信道干扰和电磁环境变化,导致信号幅度缓慢或快速波动
识别一段数据是“随相信号”还是“起伏信号”,方法很简单:连续采集一段时间内的包络,计算它的方差。如果包络的方差远小于均值,基本可以按随相信号处理;如果方差和均值同一个数量级甚至更大,那就要按起伏信号来建模。
我在一套无人机图传链路测试中做过统计,飞行过程中接收信号包络的方差大约是均值的 0.6 倍,明显属于起伏信号。当时如果有人还按“恒定幅度”去设门限,链路肯定不稳定。
4.3 接收机参数设计中的经验取值
设计一个包络检波接收机时,有几个参数值得提前定好:
- 带通滤波器的带宽:取信号带宽的 1.2~1.5 倍,太窄会让信号波形失真,太宽会引入额外噪声。
- 门限与噪声功率的比值:按目标虚警概率反推。如果允许虚警概率为 10^-4,门限大约在噪声标准差的 3.7 倍位置;如果允许 10^-2,门限可以降到 2.3 倍左右。
- 观测时间:包络检波后的低通滤波器时间常数,决定了检测的等效信噪比积累长度。时间常数越大,输出包络越平滑,但响应越慢。突发通信里要折中,一般取符号周期的 3~5 倍。
这些取值没有绝对标准,但有了模型之后就可以定量推导,而不是靠感觉去调。我最开始做接收机时,门限靠手调,每换一个环境就要重新调,后来改成根据采集噪声功率自动计算门限,一发不可收拾地发现稳定性好得多。
5. 常见误区与踩坑记录
5.1 随相信号不等于未知信号
随相信号只是相位未知,幅度、频率、调制方式都是确定的。这不是“什么都不知道”的信号,而是“知道除了相位以外的一切”。很多人把随相信号和“完全未知信号”混淆,导致在仿真里把信号建模成幅度也随机、频率也漂移的复杂模型,把问题搞复杂了。
如果只是相位随机,那就用非相干检测解决;如果频率也未知,那是另一层估计算法的问题;如果波形和调制方式都未知,那就不是检测问题而是认知无线电的课题了。建模时不要过度复杂化。
5.2 起伏信号不能只看平均功率
起伏信号的平均功率可能看起来够用,但瞬时功率会深衰落。用平均信噪比评估起伏信号性能,会高估系统表现。正确做法是看一定置信度下的瞬时信噪比下限,或者直接看误码率曲线中的“误差地板”效应是否出现。
我早期做射频链路预算时,只用平均接收功率算余量,结果实测误码率比预算差了好几个数量级。后来才意识到多径衰落带来的深度衰落才是主要矛盾。从那以后做链路预算,我至少会按衰落余量 8~12 dB 来做工程冗余。
5.3 门限设计不能直接拿信号幅度定
不少初学者喜欢把检测门限设在“信号幅度的一半”,这在接收信号幅度恒定时勉强能用,但只要叠加噪声或者信号发生起伏,这种方法直接失效。门限应当由噪声电平与目标虚警概率共同决定,而不是由信号幅度决定。
如果信号幅度本身起伏,门限跟着信号走是错的。门限跟着噪声走,检测概率自然由信噪比决定,这才是合理的分层逻辑。
5.4 快速识别三种信号的口诀
我自己总结了一个快速识别口诀:
- 相位唯一 -> 确定信号
- 振幅确定相位乱 -> 随相信号
- 幅度也在抖 -> 起伏信号
拿到一个待分析的信号时,先画包络曲线,看幅度是否稳定;再取多段信号的瞬时相位直方图,看是否均匀分布。两步就能判断该按哪种模型处理。
5.5 仿真与实测之间的典型落差
最后说一个普遍的仿真坑:仿真里用的是理想带通滤波器和理想包络检波器,但实际电路里的滤波器有插入损耗,包络检波器二极管有导通压降,低通滤波器有纹波,这些都会让实际检测概率比仿真低。做仿真时预留 1~2 dB 的余量,是经验之谈。
我个人做接收机联调的习惯是:仿真性能达标后,先降 2 dB 信噪比再跑一遍硬件测试,如果还能满足指标,再考虑批量。这个“预留 2 dB”的习惯帮我挡掉了很多环境差异带来的翻车事故,也算是在三类信号分析中绕不开的一点实战体会。