通信原理里,2PSK的功率谱密度推导,可能是很多人在期末复习和考研备考时最头疼的一块。公式又长又抽象,教材上往往直接甩出结论,中间的“为什么”全靠自己脑补。但功率谱密度恰恰是理解2PSK带宽、频带利用率、抗噪声性能的钥匙,绕不开。这篇文章我就把2PSK功率谱密度从信号模型、自相关函数、维纳-辛钦定理到最终公式的推导全过程,一步步拆开讲清楚,还会附上MATLAB仿真验证的方法和几个常见误区。不管你是正在备考通信原理的学生,还是工作中需要评估调制信号带宽的工程师,这篇内容都能让你把这块知识真正吃透,而不是停留在背公式的层面。
1. 先从信号模型说起:2PSK到底长什么样
1.1 从“用相位传信息”理解信号表达式
2PSK,全称二进制相移键控,核心思路是用载波的两个相位状态来分别表示二进制码元0和1。最常见的形式是绝对相移键控:当发送码元“0”时,载波相位为0;当发送码元“1”时,载波相位为π。用公式表达就是:
s_2PSK(t) = A·cos(ω_c t + φ_n),其中φ_n取0或π,分别对应二进制码元0和1。
很多同学一上来就被这个带φ_n的表达式绕晕了。实际上,用积化和差公式展开一下,事情会变得非常清爽。当φ_n=0时,cos(ω_c t)就是它本身;当φ_n=π时,cos(ω_c t + π) = -cos(ω_c t)。所以你完全可以把它看成一个双极性基带信号m(t)去乘以载波cos(ω_c t):
s_2PSK(t) = m(t)·cos(ω_c t),m(t)取值为+1或-1。
这里的m(t)就是双极性不归零(NRZ)随机脉冲序列。这一个转换是整个推导的基石,后面所有的频域分析都是从这个“基带信号乘载波”的模型出发的。你不妨记住这个画面:2PSK本质上就是“双极性基带信号做线性搬移”,而不是像2FSK那样改变频率,也不是像2ASK那样改变幅度。
1.2 为什么功率谱密度是绕不开的一个坎
时域波形能告诉我们信号长什么样,但它回答不了一个关键问题:这个信号到底占用多少带宽?信道怎么分配?滤波器怎么设计?邻道干扰怎么评估?这些都得靠频域分析,也就是功率谱密度。
可以把时域波形类比成一套房子的平面图,功率谱密度则是这张平面图的结构分析报告——哪些承重墙占了多少面积,哪里是主要活动区域。对通信系统来说,功率谱密度直接决定了信号的频带占用情况,也决定了接收端滤波器的通带设计。比如你设计一个2PSK系统,码速率是100 kbps,如果不知道功率谱密度的主瓣宽度是200 kHz,你都不知道信道带宽至少要预留多少。
另一个实际理由是,2PSK的功率谱密度结论和2ASK的推导路径几乎同源,学会这一套,后面学2ASK、QPSK的功率谱分析都能顺下来。所以这块内容不只是考试要考,它是你理解整个数字频带传输系统的一扇门。下面我们就从推导的第一环——基带信号的自相关函数——正式开始。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 一步一步推:从自相关函数到功率谱密度
2.1 基带信号的自相关函数:一切推导的起点
要得到s_2PSK(t)的功率谱密度,最正统的路径是:先求自相关函数,再用维纳-辛钦定理变换到频域。为什么非要从自相关函数入手?因为2PSK信号是随机信号,没法直接做傅里叶变换(它不满足绝对可积条件),但它的自相关函数在统计意义上是稳定的,可以做傅里叶变换。
先把基带信号m(t)写出来:
m(t) = Σ a_n·g(t - nT_b)
其中a_n是第n个码元的幅度,取+1或-1,等概率出现;g(t)是宽度为T_b的矩形脉冲(不归零);T_b是码元周期,R_b = 1/T_b就是码速率。
求自相关函数R_m(τ) = E[m(t)·m(t+τ)],关键要看两个时刻是否落在同一个码元内。这里有个很重要的手法:把延时τ限制在|τ| ≤ T_b内来讨论。
当两个时刻落在同一个码元内的概率是1 - |τ|/T_b(你可以理解为窗口重叠的比例),此时a_n·a_n = 1,自相关贡献为1;当落在不同码元时,由于a_n和a_{n+1}独立且等概率取±1,期望E[a_n·a_{n+1}] = (1/2)·1 + (1/2)·(-1) = 0,这部分贡献为零。所以:
R_m(τ) = 1 - |τ|/T_b,|τ| ≤ T_b;R_m(τ) = 0,|τ| > T_b
这个函数画出来就是一个三角形。很多同学会问,为什么矩形脉冲的自相关是三角形?你可以类比:两个同样宽度的矩形窗,错开τ后重叠面积随τ线性减小,减到零时τ等于窗宽。这里的数学本质是一样的,只是把“面积重叠”换成了“概率重叠”。等概率假设在这里起了决定性作用,如果码元出现0和1的概率不等,那么跨码元的自相关就不为零,后面的功率谱就会多出离散谱线。这也是后面要重点展开的一点。
2.2 维纳-辛钦定理:把自相关换到频域
有了自相关函数,直接套维纳-辛钦定理,基带信号的功率谱密度就是自相关函数的傅里叶变换:
S_m(f) = ∫_{-∞}^{∞} R_m(τ)·e^(-j2πfτ) dτ
对三角脉冲做傅里叶变换,结果是sinc函数的平方:
S_m(f) = T_b·[sin(πfT_b)/(πfT_b)]² = T_b·sinc²(fT_b)
这个结果非常重要,你可以从两个角度去验证它是否正确。第一,在f=0处,S_m(0) = T_b,而功率谱密度曲线下的面积等于信号平均功率,双极性NRZ信号的平均功率正好是1,把T_b·sinc²积分回来看是能对上的。第二,零点位置在f = k/T_b(k=1,2,...),这说明主瓣两侧的过零点间隔就是1/T_b,整个主瓣宽度是2/T_b,正好等于2倍码速率。
在继续往下推之前,我要先铺垫一个细节:上面的推导默认码元序列是广义平稳的,且在推导自相关时采用了“随机相位平均”的思想。实际通信系统里,码元序列还需要满足各态历经性,否则单次观察的时间平均和统计平均不一定相等。教材里通常默认这个条件成立,你考试时不需要展开,但心里要清楚这个前提。
2.3 载波调制就是把基带谱搬到高频:频谱搬移的数学
现在回到完整的2PSK信号s(t) = m(t)·cos(ω_c t)。要求它的功率谱密度,最直接的路径是求s(t)的自相关函数R_s(τ):
R_s(τ) = E[m(t)·m(t+τ)·cos(ω_c t)·cos(ω_c(t+τ))]
利用三角恒等式把两个余弦的乘积展开:
cos(ω_c t)·cos(ω_c(t+τ)) = (1/2)[cos(ω_c τ) + cos(2ω_c t + ω_c τ)]
其中第二项含有2ω_c t,对时间求平均后趋于零(或者在接收端等效低通分析时被滤除),因此:
R_s(τ) = (1/2)·R_m(τ)·cos(ω_c τ)
这里其实做了一个简化处理:忽略了倍频分量。严格来说,如果m(t)不是确定信号,第二项也不严格为零,但工程上这个近似完全可接受,尤其当你把分析带宽限制在载波附近时。功率谱密度对R_s(τ)再做一次傅里叶变换,利用频移特性,直接就得到:
S_2PSK(f) = (1/4)[S_m(f - f_c) + S_m(f + f_c)]
把前面S_m(f) = T_b·sinc²(fT_b)代入,最终:
S_2PSK(f) = (T_b/4)
这就是2PSK功率谱密度的标准表达式。看到这个公式你就能理解,2PSK的功率谱就是基带双极性NRZ信号的功率谱,从零频处左右搬移到±f_c附近,幅度减半再减半(因为能量分到正负两个频段,每个频段又是原来四分之一)。主瓣仍然以f_c为中心,宽度2R_b。
2.4 为什么没有离散谱线:双极性等概的隐藏礼物
推导完了,有一个细节特别值得停下来细看:为什么2PSK功率谱里没有离散谱线(冲激)?对比一下2ASK就明白了。2ASK的基带信号是单极性NRZ,即“有信号时为A,无信号时为0”,它的均值不为零。功率谱密度里除了连续谱,还会在载频处出现一个冲激分量,这个冲激来自基带信号的直流分量被搬移到了载频上。
而2PSK的基带信号是双极性NRZ,在等概率条件下,m(t)的均值E[m(t)] = 0.5·(+1) + 0.5·(-1) = 0,没有直流分量,所以频谱搬移后也不会有载波离散谱线。这带来一个工程上的好处:2PSK信号的功率全部集中在连续谱里,没有浪费在载波分量上,功率利用效率更高,也不容易被窄带干扰盯着打。这也是为什么许多实际系统偏爱PSK类调制的原因之一。
不过这里有个容易踩的认知陷阱:等概率假设一旦被破坏,比如码元0和1出现概率不相等,双极性信号均值就不为零,功率谱里会重新出现离散谱线。也就是说“2PSK无离散谱”是有前提条件的,考试时判断题如果只说“2PSK没有离散谱”而不提等概条件,是需要小心的。
3. 带宽、频带利用率与工程意义
3.1 主瓣宽度、第一零点带宽和工程带宽
从功率谱密度公式可以直接读出带宽信息。2PSK频谱的sinc²包络以f_c为中心,主瓣宽度为2R_b,这就是常说的“第一零点带宽”。为什么叫第一零点带宽?因为频谱在f = f_c ± R_b处第一次降到零,这之间围成的区域就是主瓣。
必须说清楚:数学上sinc²函数是无限延伸的,所以2PSK信号的绝对带宽是无穷大。但实际能量绝大部分集中在主瓣里,旁瓣衰减很快(按频率平方衰减)。工程上我们不可能用无限带宽去传输,所以在设计系统时,要么用带通滤波器把旁瓣削掉一部分,要么在发端对基带脉冲做成型滤波(比如升余弦滚降),把带宽压缩到(1+α)R_b/2(α为滚降因子)。这里你就能明白,为什么很多教材在讲MPSK带宽时会引入滚降系数——因为理想矩形脉冲的频谱旁瓣过大,直接发出去会造成邻道干扰。
举个例子,R_b = 100 kbps时,理想矩形脉冲的2PSK主瓣带宽是200 kHz。如果换成滚降因子α=0.5的升余弦脉冲,带宽就变成(1+0.5)×100/2 = 75 kHz(单边带宽),比200 kHz窄不少,代价是时域波形不再是矩形,接收端的抽样判决时刻要求更精确。
3.2 和2ASK、2DPSK的对比:功率谱相似的背后
很多同学学到这里会有一个疑问:2PSK和2ASK的功率谱密度形式看起来也太像了,都是sinc²搬移,那它们到底有什么区别?确实,形状上两者都有主瓣宽度2R_b,但细节上存在一个本质差异:2ASK有离散载波分量,2PSK没有。这个差异用一句话概括:单极性信号在频域留下直流痕迹,双极性信号把直流洗干净了。
再来看2DPSK。2DPSK是差分相移键控,它用相邻码元的相位变化而不是绝对相位来表示信息。你可能想问:既然信息编码方式都变了,功率谱会变吗?答案是不会。因为差分编码本质上是把数据序列做了一次线性变换(前后码元异或/同或),在统计特性上不改变双极性随机序列的平稳性和功率谱形状。所以2DPSK的功率谱密度与2PSK完全一致。这个结论在很多教材里直接写,但背后的逻辑是“差分编码不改变二阶统计特性”。理解到这一层,考试时遇到相关判断题就不慌。
三种调制的功率谱特征可以整理成一张直观的对比表:
| 调制方式 | 基带信号形式 | 连续谱 | 离散谱 | 主瓣宽度 |
|---|---|---|---|---|
| 2ASK | 单极性NRZ(0/A) | 有 | 载频处有冲激 | 2R_b |
| 2PSK | 双极性NRZ(±A) | 有 | 无(等概时) | 2R_b |
| 2DPSK | 双极性NRZ(差分编码后) | 有 | 无(等概时) | 2R_b |
顺便说一句,虽然2ASK和2PSK带宽相同,但在误码性能上2PSK明显优于2ASK,因为两个相位状态在信号空间里的欧氏距离更大,抗噪声能力更强。带宽外形相同不代表性能相同,这是通信原理里“带宽”和“信噪比”两条主线交织的地方。
3.3 频带利用率:0.5 bit/s/Hz是什么意思
有了带宽,自然要关心频谱效率。频带利用率η的定义是传信率除以带宽:η = R_b/B,单位是bit/s/Hz。对理想矩形脉冲的2PSK,B = 2R_b,所以η = 0.5 bit/s/Hz。这意味着,每赫兹带宽每秒最多只能传0.5个比特信息。是不是觉得有点低?没错,这正是2PSK在高速率场景下的短板。
那为什么QPSK能达到1 bit/s/Hz?因为QPSK一个符号携带2比特,符号速率R_s = R_b/2,在同样R_b下,信号带宽是2R_s = R_b,所以η = R_b / R_b = 1 bit/s/Hz。思路就是“用一个符号装更多比特”。这也是为什么现代通信系统普遍用QPSK、16QAM等高阶调制,而不是直接追求更复杂的单一2PSK。但QPSK的功率谱密度推导路径和2PSK几乎一样,只是基带信号从一维变成两路正交的二维信号。所以把2PSK的功率谱吃透,后面学QPSK等于白送一半。
这里还要注意一个概念区分:频带利用率的“带宽”到底是双边带宽还是单边带宽。在带通系统里,我们通常说2PSK带宽是2R_b,指的是正频率轴上的带宽(即从f_c - R_b到f_c + R_b),这是工程中实实在在占用的信道宽度。而基带信号分析时,双边谱会看到正负两半,容易把人绕晕。你自己整理笔记时,建议明确标注“这里用的是单边带宽”,避免考试时用错定义。
4. 动手验证一遍:MATLAB仿真实操
4.1 仿真方案设计:采样率、码速率、载波频率怎么定
理论推导再漂亮,没有仿真验证总觉得不踏实。我自己学这一块时的经验是:用MATLAB生成一段2PSK信号,然后用周期图法估计功率谱密度,跟理论公式画在一个图上对比。参数选择是第一个需要注意的环节。
假设码速率R_b = 500 Hz,载波频率f_c = 1000 Hz,采样率fs取多少?这里有个硬性约束:采样率必须高于信号最高频率的两倍。2PSK信号主瓣最高到f_c + R_b = 1500 Hz,所以fs至少要大于3000 Hz。实际为了留足余量,我一般取fs = 8000 Hz,这样每个码元有fs/R_b = 16个采样点,计算分辨率也够。
还有一个容易被忽视的细节:码元数要够多、FFT点数要够大。如果码元数太少,统计平均不充分,估计出来的功率谱毛刺会非常大。我建议至少取512个码元,做FFT时窗口长度取512点(相当于32个码元),重叠50%,这样谱线的平滑程度会比较理想。
4.2 完整代码与实现流程
下面这段代码是我实测过可以直接跑的。注释写得很详细,大家可以直接复制到MATLAB里练习。
matlab复制%% 参数设置
fs = 8000; % 采样率(Hz)
fc = 1000; % 载波频率(Hz)
Rb = 500; % 码速率(bps)
Tb = 1/Rb; % 码元周期
L = round(fs/Rb); % 每个码元对应的采样点数
N = 1024; % 码元个数
%% 生成基带双极性NRZ信号
data = randi([0 1], N, 1); % 随机二进制码元
m = 2*data - 1; % 0 -> -1, 1 -> +1
m_upsample = reshape(repmat(m, 1, L).', [], 1); % 每个码元重复L次,形成NRZ波形
%% 生成载波并完成2PSK调制
t = (0:length(m_upsample)-1)' / fs; % 时间轴,注意利用转置保持列向量
carrier = cos(2*pi*fc*t);
s_2psk = m_upsample .* carrier;
%% 估计功率谱密度
[pxx, f] = pwelch(s_2psk, hamming(512), 256, 1024, fs, 'centered');
pxx_dB = 10*log10(pxx);
%% 理论2PSK功率谱密度曲线(画在正频率一侧)
Tb_samp = L / fs; % 以采样点为单位算Tb,等价于1/Rb
f_theory = linspace(0, fs/2, 1024);
S_theory = (Tb_samp/4) * (sinc((f_theory - fc)*Tb_samp).^2 + ...
sinc((f_theory + fc)*Tb_samp).^2);
S_theory_dB = 10*log10(S_theory + eps); % 加eps避免log(0)
%% 画图对比
figure;
plot(f, pxx_dB, 'b', 'LineWidth', 1); hold on;
plot(f_theory, S_theory_dB, 'r--', 'LineWidth', 1.5);
xline(fc, 'k--', '载频');
xline(fc + Rb, 'g--', 'fc+Rb');
xline(fc - Rb, 'g--', 'fc-Rb');
xlabel('频率 (Hz)'); ylabel('功率谱密度 (dB/Hz)');
legend('仿真估计', '理论公式', '载频', '主瓣边界');
title('2PSK功率谱密度:仿真 vs 理论');
grid on;
这段代码有几个细节必须提醒。第一,sinc函数在MATLAB里是归一化sinc,即sinc(x) = sin(πx)/(πx),所以直接用它构造sinc²理论谱会非常方便,不用自己手动除以π。第二,pwelch函数返回的f可能是以fs为参考的,用了'centered'参数后,f的范围是[-fs/2, fs/2],x轴会出现负频率,画图时正负谱都要看。第三,代码里我特意用repmat加转置的方式做上采样,这种写法比kron可读性高,也不容易出错。
4.3 仿真结果怎么看:对照理论曲线
运行完代码,你会看到蓝色仿真谱和红色理论谱基本叠在一起,两者有三处关键特征值得对照确认。
第一,主瓣的中心在f_c = 1000 Hz处,这与载波频率完全一致。主瓣宽度从f_c - R_b = 500 Hz到f_c + R_b = 1500 Hz,正好是2R_b = 1000 Hz,对应理论上的第一零点带宽。第二,仔细观察f = 500 Hz和f = 1500 Hz附近,仿真谱会跌到很低的值,这是因为sinc²函数的零点正好在这些位置,但受限于FFT分辨率和加窗泄漏,仿真结果不会严格到负无穷,而是有一个凹陷。第三,在整个频段上看不到尖锐的离散谱线,这正是双极性等概信号没有载波分量的直观证据。如果我把数据改成单极性(比如把m换成0和1),你会立刻在f_c处看到一根明显的冲激峰,那就是2ASK和2PSK在频谱上的标志性区别。
还有一个实操经验:如果仿真出来的功率谱毛刺特别大,先别急着怀疑代码,多半是FFT窗口太短或者码元数太少。把pwelch的窗口从512改到1024,或者把N从1024改到2048,谱线会平滑很多。代价是计算时间变长,但这点计算量完全可以接受。
5. 常见误区、高频考点与实用技巧
5.1 四个高频误区速查表
很多同学在学2PSK功率谱密度时,会在细节上栽跟头。下面这四个问题是我在不同场合(课堂答疑、考研辅导、面试)里反复见到的,整理成速查表方便你们自查。
| 误区 | 正确理解 |
|---|---|
| 认为2PSK带宽是R_b | 理想矩形脉冲下第一零点带宽是2R_b,R_b是码速率不是带宽 |
| 认为2PSK与2ASK功率谱完全一样 | 连续谱形状相同,但2ASK有离散载波分量,2PSK没有(等概时) |
| 推导时忽略自相关函数,直接背最终公式 | 考试中“推导题”要求过程,从R_m(τ)到S_m(f)到搬移,一步都不能少 |
| 认为频谱就是功率谱密度 | 频谱是单个信号的傅里叶变换,功率谱密度是随机信号的统计描述,物理意义不同 |
第3条尤其重要。我见过不少同学考场上公式默写对了,但推导过程不会写,白白丢分。功率谱密度推导是有固定套路的:先建模,再求自相关,再做傅里叶变换,最后搬移。把这四步记在脑子里,比记一百遍最终公式都管用。
5.2 考试与面试常问的三个问题
结合历年通信原理期末考试和部分公司面试题,我总结出三个围绕2PSK功率谱密度的高频问题,提前准备会踏实很多。
第一个问题:“为什么2PSK没有离散谱?”标准答法是:2PSK的基带信号是双极性NRZ信号,在0和1等概率条件下均值为零,因此没有直流分量,频谱搬移到载频处时不会形成冲激谱线。如果想加分,可以补一句“如果码元概率不平衡,离散谱会出现”。
第二个问题:“2PSK的主瓣带宽为什么是2R_b?”回答思路是:功率谱密度是T_b·sinc²(fT_b)搬移到载频的结果,sinc²第一零点位于f = ±1/T_b = ±R_b处,所以主瓣宽度是2R_b。如果追问“那实际系统中带宽是多少”,要提到升余弦滚降后的(1+α)R_b/2。
第三个问题:“2PSK和2ASK频谱结构有什么异同?”异:2PSK没有离散载波分量,2ASK有;2PSK误码性能更好。同:连续谱形状相同,带宽相同。这个问题的变形还可能出现在“为什么实际系统中更常用PSK而不是ASK”的讨论中,核心还是离散谱和功率利用效率。
5.3 学习路径建议:公式、仿真、习题三管齐下
最后聊一点个人经验。功率谱密度这块内容,光看书和做题是容易“假学会”的,只有自己动手推一遍、仿一遍,才能形成真正稳定的理解。我推荐的学习路径是三步走。
第一步,合上教材,自己从信号模型开始推导,直到得出最终公式。卡住的地方再翻书对照。第二步,把上面的MATLAB代码自己敲一遍,改成不同的码速率和载波频率,观察带宽怎么变化,或者把双极性改成单极性看离散谱怎么冒出来。第三步,找两三道涉及功率谱密度的期末或考研真题做一遍,重点看推导题和判断题的表述变化。三步走完,你再看教材里的公式,就不会觉得是一堆符号了,而是“从哪来到哪去”都清清楚楚。
如果你用的是樊昌信《通信原理》第七版,建议把2PSK功率谱密度和2ASK功率谱密度两节放在一起看,对比着学。这两节在结构上是镜像的,一个单极性一个双极性,搞清楚一个等于搞清楚两个。而5G、WiFi里大量使用的QPSK、16QAM,功率谱密度分析思路又是它们的延伸。基础打牢了,后面的路会越走越顺。
我当年学这一块时,最大的体会是:功率谱密度不是在考数学,而是在训练一种“从统计角度看信号”的思维。单一波形是偶然的,统计谱才是本质的。你把这条主线抓住了,2PSK的功率谱密度就不再是背诵负担,而是一张可以随时调用的系统设计地图。
