FEATURED · 精选文章

MATLAB仿真对比4-FSK与4-QAM在Rayleigh信道下的误码率

发布时间 / 2026/9/13 17:48:44
来源 / 创域科博编辑部
栏目 / 资讯中心
MATLAB仿真对比4-FSK与4-QAM在Rayleigh信道下的误码率 简介这份压缩包围绕无线通信中4-FSK与4-QAM两种调制技术在Rayleigh衰落信道下的性能对比展开面向通信工程、电子信息类学生及科研人员可用于理解数字调制方式与多径衰落信道对误码性能的综合影响。包体为单个m脚本ex11.m以MATLAB仿真方式完成两种调制方案的误符号率与误比特率统计压缩包整体仅约1KB轻量便捷运行门槛低。目前已有458人浏览学习。脚本内置不同信噪比条件下的性能计算逻辑可绘制BER/SER对比曲线帮助读者直观掌握4-FSK在衰落环境下的抗干扰优势与4-QAM在频谱效率方面的特点同时预留了仿真框架便于后续扩展到高阶调制或其他信道模型。整体而言这份资源适合课程设计、毕业设计及无线通信仿真入门可作为数字调制性能分析的基础工具。1. 为什么拿4-FSK和4-QAM在Rayleigh信道里做对比在移动通信里Rayleigh衰落是绕不开的信道模型而调制方式直接决定了链路能否在深度衰落中存活。很多教材单讲4-FSK或4-QAM但把两者放在同一衰落信道下用MATLAB仿真对比才能真正看出带宽效率和鲁棒性的取舍。Rayleigh.rar里的ex11.m脚本干的就是这件事在瑞利衰落加高斯噪声的环境下分别测两种调制的误符号率SER与误比特率BER然后画成SNR曲线。实际跑下来你会发现4-FSK在低信噪比下反而更不容易崩溃但频谱效率低4-QAM吞吐高却对信道估计和幅度恢复极其敏感。这里直接拆解ex11.m可能采用的仿真链路给出可复现的MATLAB代码、关键参数设置和调试技巧适合正在做无线通信课程设计、或者在选型物理层调制方式时想快速验证的工程师和学生。2. 调制原理与Rayleigh信道模型从符号映射到衰落系数2.1 4-FSK的符号映射与非相干解调逻辑4-FSK四进制频移键控每符号携带2比特用4个不同载波频率代表四种信息状态。信息承载在瞬时频率上因此它对载波幅度衰落不敏感。工程上常见的实现方式是选一组正交频率f_i f_c (2i - 3)Δf, i 0,1,2,3其中Δf的选择要满足频率正交条件。对于非相干检测频率间隔通常取符号速率Rs的整数倍比如Δf Rs这样在观测窗口内各频率信号互相正交接收端用带通滤波器或FFT检测哪个频率能量最大即可。由于4-FSK解调不依赖载波绝对相位甚至可以使用包络检波因此在Rayleigh信道中幅度衰落和相位随机变化对它的影响主要体现在信号能量下降而非正交性破坏这也是它在深衰落环境中误码性能相对稳定的原因。仿真中我一般这样生成4-FSK符号M 4; k log2(M); data randi([0 M-1], 1, Nsymbols); % 0~3符号 df Rs; % 频率间隔等于符号速率 foffsets (2*data - (M-1)) * df/2; % 偏移频率序列 % 每个符号对应的基带波形取 T1/Rs, 采样率 fs T 1/Rs; t (0:fs-1)/fs; txWave exp(1j*2*pi*foffsets * t) / sqrt(fs); % 矩阵每行代表一个符号波形foffsets将符号0~3映射到{-1.5df, -0.5df, 0.5df, 1.5df}相邻间隔df。除以sqrt(fs)是为了让每个符号能量归一化为1这样后续叠加噪声时EbN0的定义才和理论一致。fs是单个符号周期内的采样点数不要和符号速率混淆。2.1.1 为什么频率间隔要取整数倍符号速率如果Δf不是Rs的整数倍不同频率之间的相关系数不为零包络检波时其他频率的能量会泄漏到目标频率上形成串扰误码率会明显抬高。反过来Δf过大又会浪费带宽。4-FSK的实际占用带宽约为2Δf Rs随进制数增加线性增长这也是它频谱效率低的原因。具体实现时还要注意载波初始相位非相干解调对相位不敏感但相干解调需要额外恢复载波。2.2 4-QAM的星座映射与相干解调前提4-QAM在教科书中常与QPSK混为一谈。本质上4-QAM是4个幅度/相位组合但工程实现中常用QPSK的星座点{1j, -1j, -1-j, 1-j}幅度恒定调制效率高。在MATLAB中直接用pskmod生成QPSK符号或者用qammod(data, M, gray)。两者在Gray映射时比特误码率相同但星座点相位排布略有差异。相干解调需要恢复载波相位和幅度。Rayleigh信道对幅度是乘积性衰落会造成星座收缩和旋转若不做均衡判决门限固定时错误率会剧增。因此仿真中至少要使用理想信道状态信息做零迫均衡否则4-QAM的误码率会被系统性抬高无法反映调制本身的性能。均衡公式很简单rxEq rx ./ h; % h为每个符号的Rayleigh衰落系数这里用复数除法将衰落抵消。实际系统里h需要从导频中估计估计误差会导致残余衰落但ex11.m这种对比仿真通常假设理想CSI以便聚焦调制方式的差异。2.3 Rayleigh信道模型为什么用复高斯随机变量Rayleigh信道在基带等效为一个乘性复系数h幅度|h|服从瑞利分布相位在[0,2π)均匀分布。对平坦慢衰落信道每个符号可以认为只乘一个衰落系数即接收信号r h*s n其中h (x jy)/√2x,y是相互独立的高斯随机变量。生成方式h (randn(1, Nsymbols) 1j*randn(1, Nsymbols)) / sqrt(2);除以sqrt(2)是为了让E[|h|^2]1这样平均接收信号功率和AWGN信道一致SNR定义不产生偏移。如果不归一化4-FSK和4-QAM的BER曲线会整体平移约3dB。这里也可以顺便检查一下瑞利分布的PDF形状用histogram(abs(h))和理论公式对比就能确认模型正确。2.4 两种调制在仿真公平性上的处理对比时要保证平均接收信噪比一致。常见做法是信道衰落平均功率为1然后叠加功率可调的AWGN。这样两种调制都经历相同的平均衰落水平差别只来自调制机制本身。需要留意的是4-FSK使用非相干解调4-QAM使用相干解调这是两种调制在实际系统中最常见的搭配也是ex11.m对比的意义所在不仅是调制方式对比也包含了检测方式的工程选择。调制方式典型解调每符号比特数对相位同步要求带宽效率4-FSK非相干包络检波2无低4-QAM/QPSK相干均衡2高高上表是两者在基础层面的差异。带宽效率上4-QAM明显占优但带来的代价是接收机复杂度上升以及在深衰落环境下需要极好的信道跟踪能力。3. ex11.m仿真链路搭建发射、滤波、衰落、解调与误码统计3.1 仿真主循环的整体结构我一般把ex11.m这种脚本整理成两层外层遍历信噪比内层做蒙特卡洛仿真。每个SNR点至少跑十万个符号否则高信噪比区域的误码率统计波动太大。结构如下EbN0_dB 0:2:20; Nsymbols 1e5; BER_FSK zeros(size(EbN0_dB)); BER_QAM zeros(size(EbN0_dB)); for idx 1:length(EbN0_dB) EbN0_lin 10^(EbN0_dB(idx)/10); N0 1 / (2 * EbN0_lin); % 符号能量假设为1, Es2Eb BER_FSK(idx) monte_carlo_fsk(Nsymbols, N0); BER_QAM(idx) monte_carlo_qam(Nsymbols, N0); endN0的计算依据是符号能量Es1归一化每符号2比特所以Es2Eb那么N0Es/(2EbN0)1/(2*EbN0_lin)。如果直接把EbN0当成EsN0曲线上所有点都会向右偏移3dB。这种换算错误在课程设计和论文复现里非常常见。3.1.1 为什么不能直接用awgn函数awgn函数要求输入是时域波形并且会根据输入信号的实测功率自动换算SNR。在Rayleigh信道上如果先乘衰落再调用awgn衰落会改变各符号的瞬时功率导致awgn内部计算的“信号功率”变成瞬时功率的均值噪声量会不准确。更可靠的做法是自己控制噪声方差在基带复包络上加sqrt(N0/2)*(randn 1j*randn)的噪声。3.2 4-FSK的蒙特卡洛函数下面是一个基于基带复包络的非相干4-FSK仿真函数。信号用四个复指数波形表示接收端对四个候选频点分别做相关并取模最大值所在索引就是判决结果。function ber monte_carlo_fsk(Nsymbols, N0) M 4; k log2(M); Rs 1; T 1/Rs; fs 16; % 每符号采样点数比如16 t (0:fs-1)/fs; % 采样时刻单位符号周期 data randi([0 M-1], 1, Nsymbols); df Rs; foffsets [-1.5*df, -0.5*df, 0.5*df, 1.5*df]; refMat zeros(M, fs); for i 1:M refMat(i, :) exp(1j*2*pi*foffsets(i)*t) / sqrt(fs); end errs 0; for n 1:Nsymbols tx refMat(data(n)1, :); h (randn 1j*randn) / sqrt(2); noise sqrt(N0/2) * (randn(1,fs) 1j*randn(1,fs)); rx h * tx noise; for m 1:M corr(m) abs(sum(rx .* conj(refMat(m,:)))); end [~, decision] max(corr); if (decision-1) ~ data(n) errs errs 1; end end ber errs / Nsymbols; end代码逻辑不复杂但要注意变量初始化。判决时用的是复相关再取模这是非相干FSK的标准做法它丢弃了载波相位信息只保留能量信息。衰落系数h只乘在信号上噪声是独立的因此瞬时SNR |h|^2 * Es / N0服从指数分布这也解释了Rayleigh信道中FSK误码率不会像AWGN中那样快速下降。由于tx能量归一化相关输出噪声方差等效为N0/2信噪比定义和主循环一致。3.3 4-QAM的蒙特卡洛函数4-QAM在平坦慢衰落信道下的仿真要简单得多因为它是线性调制可以直接在符号级操作function ber monte_carlo_qam(Nsymbols, N0) M 4; k log2(M); data randi([0 M-1], 1, Nsymbols); sym pskmod(data, M, pi/4); % 星座点归一化能量1 h (randn(1, Nsymbols) 1j*randn(1, Nsymbols)) / sqrt(2); rx h .* sym; noise sqrt(N0/2) * (randn(size(rx)) 1j*randn(size(rx))); rxEq (rx noise) ./ h; % 理想信道均衡 decision pskdemod(rxEq, M, pi/4); ber sum(decision ~ data) / Nsymbols; endpskmod输出的符号能量是1。pskdemod会计算接收符号与四个星座点的欧氏距离距离最近的点作为判决结果。均衡时用h相除如果h在某些符号上幅度很小均衡会把噪声放大这正是深衰落导致的错误来源。N0的换算和4-FSK相同所以两者的误码率曲线可以直接叠加对比。3.4 误码统计的置信度问题蒙特卡洛仿真的置信度取决于误码个数而不是符号总数。如果仿真10000个符号一个误码都没有只能说明误码率低于1e-4不能拿来画曲线。稳健的做法是设置最少误码个数比如要求累积到100个误码才停止当前SNR点或者固定符号数但仅在低SNR区域使用。对于课程设计用Nsymbols 1e5通常足够了但在BER低于1e-4处还是应该注明统计不确定性。4. 误码率曲线对比与SNR参数影响分析4.1 曲线绘制与结果趋势解读仿真跑完把结果画成半对数曲线是标准动作。代码如下figure; semilogy(EbN0_dB, BER_FSK, b-o, EbN0_dB, BER_QAM, r-s); xlabel(Eb/N0 (dB)); ylabel(BER); legend(4-FSK, non-coherent, 4-QAM, coherent); grid on;绘制时要注意横轴是比特信噪比因为两种调制都是每符号2比特这样对比才公平。如果横轴用符号信噪比4-FSK曲线会左移给人“性能更好”的错觉。在平坦Rayleigh信道下两者BER曲线都不会像AWGN中那样陡峭因为深衰落事件导致的误码难以通过提高SNR消除。4-FSK的曲线在低SNR区域通常更抗造4-QAM在高SNR区域凭借更大的星座间距QPSK星座点间最小距离为sqrt(2)而4-FSK非相干检测有一定的非相干损耗有一定优势但受深衰落拖累。具体交叉点的位置取决于信道估计质量和解调方式可以在自己的仿真里跑出来然后标在图上。4.1.1 观察曲线形状时的三个关注点第一看低SNR区的斜率斜率接近常数说明误码主要由高斯噪声主导。第二看高SNR区是否出现“地板效应”——如果BER曲线在某处开始变得平行于横轴说明深衰落事件成为主要误码来源。第三看两条曲线的交叉点在交叉点左侧选4-FSK更稳右侧选4-QAM更省频谱。把这三件事写进实验报告里比单纯贴图更有说服力。4.2 EbN0与EsN0换算的两种错误错误做法后果正确做法直接把EbN0_dB当EsN0_dB曲线向右偏移10*log10(k) dB加10*log10(k) dB转换噪声方差用N0而不是N0/2仿真信噪比变为实际的一半复数噪声每维方差取N0/2对4进制调制k2正确加3dB。如果你看到4-QAM的理论BER曲线在10dB时是1e-4而仿真要13dB才达到先检查这一步。这个错误在修改发射功率归一化后特别容易复发。4.3 衰落归一化对曲线的影响h的功率如果不归一化所有SNR点的曲线都会整体平移。例如用randn1j*randn生成h平均功率为2相当于每个符号信号功率加倍曲线会比正确结果左移3dB。在比较两种调制时这种固定偏移虽然不影响相对关系但会误导你对绝对性能的判断。验证方法很简单计算mean(abs(h).^2)应该等于1。我在第一次跑ex11.m时就在这里栽过跟头曲线的绝对位置和理论差很多但两条线相对关系没变当时还以为是解调器实现有bug。4.4 过采样率与脉冲成型的折中在4-FSK仿真中过采样率fs取值要适中。太小时波形近似误差大频率正交性变差太大时计算量猛增。我通常取16或32。如果加入根升余弦脉冲成型过采样率要更高还要在接收端加匹配滤波和定时同步。ex11.m如果只是基础对比用矩形脉冲和理想采样即可重点在信道差异而不是成型滤波。若需要更实际的频谱限制可以选用rcosdesign生成滤波器但要注意滤波器的群延迟会改变符号定时需要额外补偿。5. 验证仿真可信度的几个技巧与深坑排查5.1 先用AWGN验证解调链路在跑Rayleigh之前把衰落系数h固定为1仿真完全变成AWGN信道。4-QAM的理论BER可以精确计算4-FSK非相干的理论也有闭合表达式虽然复杂。如果AWGN仿真和理论能对上说明调制、解调、误码统计的代码都正确之后引入Rayleigh衰落时才不会怀疑噪声系数。调试ex11.m时发现的一个典型问题是忘记把h置为1就先跑仿真结果误码率曲线异常还以为是衰落模型的问题。5.2 检查噪声方差与符号能量的匹配符号能量归一化后复噪声每维方差必须严格取N0/2。很多人会写成sqrt(N0)这样实际噪声功率是N0每维而不是N0/2等价于信噪比被减半折算成dB就是差了3dB。一个快速自检技巧在固定信道h1时把同一组符号分别用公式awgn(sym, snr)和自己写的手动加噪对比两者BER应一致。5.3 固定随机种子保证可复现性所有随机数生成器在循环开始前都要固定种子rng(20240617);固定种子后每次跑的曲线完全一致方便查错。但要注意如果修改了循环里randn的调用次数后续序列全部变化所以加调试输出时最好重新固定种子。5.4 从学术对比走向工程选型的一点思考4-FSK和4-QAM的对比结论并不仅仅存在于仿真曲线中。现代低功耗广域网里lora和fsk混合技术能共存正是利用FSK在低速率下的非相干检测优势而fsk协议的ros小车控制设计则更看重FSK在非视距遮挡下的抗衰减能力因为小车上无法装高稳晶振FSK对频偏的容忍度比QAM高得多。反过来如果系统对频谱效率有硬需求例如5G的调制阶数选择4-QAM及其高阶变形会在信道条件较好时胜出。仿真脚本的意义在于你可以随意切换信道模型、衰落参数和解调方式用数据支撑自己的选型判断。本文还有配套的精品资源点击获取
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻