资讯动态

AM调制解调仿真:高斯白噪声与瑞利衰落信道性能对比

发布时间:2026/9/18 17:20:14 来源:尧图企业网站定制
简介一份面向通信工程专业本科生的课程设计报告围绕AM调制解调系统在高斯白噪声信道与瑞利衰落信道下的性能展开基于MATLAB仿真对比信噪比对信号恢复质量的影响适合需要完成课程设计、理解调制解调原理以及学习Simulink建模的读者参考。文档完整覆盖设计目的、相关知识、AM调制与解调原理、高斯与瑞利信道模型搭建、仿真步骤及结果分析包含调幅波形图、频谱图和解调器参数设置等关键细节。资源为单个docx文档文件总数1个大小1.02MB内容以文字图表形式呈现便于直接查阅和修改。目前已有185人学习可作为通信原理课程设计的报告模板和MATLAB仿真入门案例。1. AM信号在两种信道下的性能差异从一次MATLAB通信课设说起做过AM仿真的人大概都有这种经历在理想信道里调制解调波形干净得像教科书插图一加噪声就容易“翻车”。更值得留意的往往不是噪声大小而是信道类型。同样是信噪比14dBAM信号走高斯白噪声信道时解调波形失真可以控制在20%以内换成瑞利衰落信道后失真直接超过40%。原因在于高斯白噪声只是加性干扰瑞利衰落却让信号本身经历乘性起伏解调端面对的不再是“信号加噪声”而是“被随机增益调制过的信号再加噪声”。这篇笔记围绕通信系统课程设计中最常见的AM调制解调仿真把Simulink模块参数、MATLAB脚本实现和包络检波性能对比完整拆开适合正在做通信课设或想快速验证基础调制在不同信道模型下表现的工程师对照复现。2. AM调制解调的数学模型与信道建模参数设计做仿真之前先把模型写清楚。这里的核心不只是AM表达式还包括载波参数、滤波器系数、噪声发生器设置以及两种信道在数学上到底差在哪。2.1 AM信号的时域表示与带宽边界标准调幅在连续波调制里是最直观的一种。假设基带信号为 $m(t)$均值为零叠加直流偏置 $A_0$ 后再与载波相乘得到时域表达式$$ S_{AM}(t) [A_0 m(t)]\cos(\omega_c t) A_0\cos(\omega_c t) m(t)\cos(\omega_c t) $$这里的 $A_0$ 不只是把波形抬高它直接决定包络检波能否正常工作。如果 $A_0$ 小于 $m(t)$ 的负峰值已调波包络会发生过调制包络检波输出会被削顶仿真波形上表现为解调出的正弦波顶部变平。判断过调制有个简单办法直接把 $m(t)$ 的绝对峰值和 $A_0$ 比较前者大于后者就说明直流偏置不够。从频谱结构看AM信号由载波分量、上边带和下边带三部分组成。若基带最高频率为 $F_{\max}$已调波带宽为 $B_{AM}2F_{\max}$。8Hz基带信号对应的AM信号理论带宽只有16Hz但因为实际仿真里噪声是宽带叠加低通滤波器的带宽就必须严格限制在基带最高频率附近否则噪声会大量泄漏到解调输出里。2.2 包络检波与同步检波的适用边界解调端有两种常见选择包络检波和同步检波。包络检波直接从已调波振幅变化的包络中提取调制信号实现简单但只适用于普通调幅信号。同步检波需要一个与载波同频同相的本地振荡信号通过差拍完成解调适用于AM、DSB、SSB等多种幅度调制。课程设计里用的是包络检波这也是AM仿真中最常见的解调方式。需要清楚的是包络检波输出端的信号和噪声存在非线性关系。大信噪比时包络检波性能接近同步检波但随着信噪比下降输出信噪比不会按比例下降而是急剧恶化这就是门限效应。门限效应是包络检波区别于同步检波的关键特征仿真时如果不做SNR扫描很难直观看到这个拐点。2.3 高斯白噪声信道与瑞利衰落信道加性与乘性的本质区别高斯白噪声信道的数学模型是加性叠加接收信号等于发射信号加上高斯白噪声噪声的功率谱密度在频带内平坦对信号的所有频谱分量施加均匀干扰。信道本身不改变信号幅度只在接收端叠加随机噪声。瑞利衰落信道则完全不同。信号经过多条路径到达接收端每条路径有不同的时延和衰减接收端合成信号包络服从瑞利分布相位服从均匀分布。数学上可以用乘性衰落模型描述接收信号等于信道增益乘以发射信号再加噪声。信道增益是随机起伏的这意味着信号功率本身就在不断跳动单纯的提高发射功率并不能稳定改善解调质量。这两种信道的仿真结论差别很大高信噪比时AWGN信道的AM解调质量接近理论值而瑞利信道下即使信噪比很高深衰落时刻的信号包络仍然可能跌到噪声以下解调器输出会出现间歇性失真。2.4 课程设计仿真的完整参数表这份课程设计使用Simulink搭建AM调制解调电路仿真参数按原报告汇总如表所示。模块或参数设定值说明基带信号频率8Hz功率0.7W低频正弦小信号载波频率180Hz初始相位 $\pi/3$AM调制器内设定直流偏置1对应Input signal offset低通滤波器分子$[4.57, 9.14, 4.57]\times 0.01$二阶FIR部分低通滤波器分母$[1, -1.3108, 0.4936]$二阶IIR反馈部分解调器采样时间0.01s对应100Hz采样率高斯噪声均值/方差均值1方差1种子41加性高斯白噪声瑞利噪声Sigma1种子47瑞利衰落包络表格里这个低通滤波器的分母系数需要特别说明。原报告写成[-1, -1.3108, 0.4936]但Simulink和MATLAB的filter函数约定分母首项为1实际使用时应写成[1, -1.3108, 0.4936]。首项为-1会把传递函数整体取反仿真输出相位和幅度都会异常这是复现时最容易踩的坑之一。3. 高斯白噪声信道下AM仿真的MATLAB实现与解调链路搭建先看AWGN信道下的实现。课程设计本身基于Simulink但在MATLAB脚本里复现同样能验证结论而且更容易批量跑SNR对比。MATLAB环境建议直接装R2023b或R2024aSimulink和DSP System Toolbox都包含在标准安装步骤内国内镜像下载对应安装包后按默认路径装完即可。3.1 Simulink模块化搭建流程Simulink下的AM系统由信号源、AM调制器、信道噪声源、AM解调器和示波器组成。搭建顺序一般是从左往右信号源发生器输出8Hz正弦波送入AM调制器调制器设置Input signal offset为1Carrier frequency为180HzInitial phase为$\pi/3$调制输出接入加性高斯噪声发生器再进入AM解调器。解调器的低通滤波器参数是关键。分子设为[4.57 9.14 4.57]*.01分母用[1, -1.3108, 0.4936]采样时间设为0.01s。高斯噪声发生器参数设置为Mean value等于1Variance等于1Initial seed设为41Sample time设为0.001。注意这里的0.01s采样时间和180Hz载波存在一个矛盾点0.01s对应100Hz采样率不满足载波180Hz的奈奎斯特采样条件。Simulink连续时间仿真中这个设置仍能跑出波形是因为求解器在连续时间域计算数字滤波器只是按照节拍更新输出。但如果在纯离散仿真或MATLAB脚本里直接照搬0.01s采样波形会出现明显混叠。后面章节会给出规避方法。3.2 MATLAB脚本实现AM调制与包络检波脱离Simulink用脚本实现同一套AM系统更灵活也便于自动化统计。下面这段代码完整覆盖调制、加噪、包络检波和低通滤波全过程。% AWGN信道下的AM仿真参数 fs 1000; % 采样率设为1kHz保证180Hz载波有足够采样点 t (0:fs*2-1)/fs; % 2秒仿真时长 A0 1; % 直流偏置对应Simulink中Input signal offset fm 8; % 低频基带信号频率 fc 180; % 载波频率 m_t sqrt(2*0.7)*sin(2*pi*fm*t); % 基带正弦功率0.7W s_am (A0 m_t).*cos(2*pi*fc*t pi/3); % AM调制信号 r_awgn awgn(s_am, 14, measured); % 按实测信号功率加入14dB高斯白噪声 env abs(hilbert(r_awgn)); % 包络检波取解析信号幅度 % 低通滤波器系数取自课程设计分母首项归一化为1 b [4.57, 9.14, 4.57]*0.01; a [1, -1.3108, 0.4936]; m_demod filtfilt(b, a, env); % 零相位滤波避免群延迟影响失真度计算 m_demod m_demod - mean(m_demod); % 去掉残留直流分量 % 失真度解调误差功率与原始基带功率之比 dist sum((m_demod(200:end) - m_t(200:end)).^2) / sum(m_t(200:end).^2); fprintf(AWGN信道 14dB失真率: %.2f%%\n, dist*100);代码里的细节值得逐条说。awgn(s_am, 14, measured)先测量输入信号功率再按14dB信噪比折算噪声功率这样不同调制参数下SNR定义始终一致。如果不用measured函数会把信号功率默认视为1W结果会产生系统性偏移。包络检波用abs(hilbert(x))实现希尔伯特变换构造解析信号后取模得到的就是实信号的瞬时包络。这是MATLAB里最简洁的包络提取方式比直接用abs(x)更符合理论模型。低通滤波阶段用filtfilt做零相位滤波好处是滤波器群延迟不会造成解调波形的时间偏移失真度计算不需要额外对齐。失真度计算从第200点开始是为了跳过滤波器初始瞬态。严格来说去直流时应先减去包络均值或原始信号均值这里直接mean(m_demod)是因为AM包络的低频分量就是$A_0 m(t)$滤波后直流成分对应$A_0$减去它正好还原零均值基带信号。3.3 加入AWGN后频谱特性的验证加噪后的信号频谱能直观反映噪声对AM的影响。噪声在频域宽范围存在调制信号频谱被噪声基底覆盖。观察加噪后AM调制信号频谱载波分量附近的上下边带仍然可见但噪声会把远离载波的频段全部抬高。在MATLAB中可以用pwelch快速观察频谱特性[pxx, f] pwelch(s_am, hamming(512), 256, 512, fs); plot(f, 10*log10(pxx)) xlabel(频率 / Hz) ylabel(功率谱密度 / dB)这段代码把AM信号的功率谱画出来可以清楚看到180Hz处载波谱线以及两侧各8Hz的边带。加入14dB噪声后频谱基底接近信号电平但仍能分辨边带结构这与课程设计图19、图20的观察一致。4. 瑞利衰落信道下AM仿真实现与两种信道性能对比把高斯白噪声替换成瑞利衰落仿真系统的行为和结论都会改变。这一章先说明如何在带通AM信号上模拟瑞利衰落再给出可直接运行的MATLAB代码最后对比两种信道下的性能差异。4.1 瑞利衰落信道在带通AM仿真中的等效处理通信原理教材里的瑞利信道通常用基带等效模型描述信道冲激响应是复数高斯随机过程。对于课程设计这类带通AM仿真一个常见的做法是直接在带通域乘以瑞利包络系数等价于让信号经历平坦瑞利衰落。这个方法忽略了多径时延扩展但在单径、慢衰落假设下足够反映乘性衰落对AM包络的影响。原课程设计在Simulink中用的是瑞利噪声发生器Sigma设为1种子47采样时间0.05s。它生成的随机序列包络服从瑞利分布。把这个序列以乘性方式加入AM链路信号幅度就会随时间随机起伏。更完整的做法是用comm.RayleighChannel对象它支持配置多普勒频移、路径时延和平均路径增益适合工程验证。但课设场景下直接生成瑞利分布包络并乘到信号上和Simulink模块的行为更接近。4.2 单径瑞利衰落信道的仿真代码与解调下面这段代码生成瑞利包络乘性叠加到AM信号上再在相同14dB信噪比下加入高斯白噪声。rng(47); % 固定种子对齐课程设计Initial seed47 N length(t); h_iid (randn(1,N) 1j*randn(1,N))/sqrt(2); % 复数高斯随机变量 ray_env abs(h_iid); % 包络服从瑞利分布 ray_env ray_env / mean(ray_env); % 归一化平均功率保持SNR比较基准一致 r_ray ray_env .* s_am; % 信号经历乘性瑞利衰落 r_ray awgn(r_ray, 14, measured); % 同一14dB信噪比下叠加AWGN env_ray abs(hilbert(r_ray)); % 包络检波 m_ray filtfilt(b, a, env_ray); % 低通滤波 m_ray m_ray - mean(m_ray); % 去直流 dist_ray sum((m_ray(200:end) - m_t(200:end)).^2) / sum(m_t(200:end).^2); fprintf(瑞利信道 14dB失真率: %.2f%%\n, dist_ray*100);第一眼看上去这段代码只比AWGN版本多了四行但物理含义完全不同。ray_env是一个时变的包络序列它的每个采样点都服从瑞利分布平均功率被归一化为1。这一步很重要如果不归一化瑞利包络平方的平均值等于2信号功率整体放大SNR比较就会失去公平性。乘性衰落后的信号立即压入awgn这样保证两种信道下的噪声功率基准一致。从波形上看瑞利信道下的解调输出会出现明显幅度波动某些深衰落时刻信号包络几乎落到噪声里波形上的表现就是混叠干扰。原理上多径信号在接收端合成时可能相互抵消包络深度衰落加性噪声在此时占据主导解调输出的有效信噪比大幅降低。4.3 同一信噪比下两种信道的性能差异仿真结果与原报告结论一致相同14dB信噪比下AWGN信道失真率低于20%瑞利信道失真率超过40%。如果把信噪比继续提高AWGN信道的失真率会稳定下降而瑞利信道由于包络随机起伏即使平均信噪比很高仍会在深衰落时刻产生突发失真整体失真率下降速度远慢于AWGN信道。这个差异的工程含义很直接在移动通信等多径环境下AM系统要达到与AWGN信道相同的解调质量需要付出高得多的信噪比代价。也正是这个原因AM在衰落信道中的实用价值有限通常需要结合抗衰落技术比如调频、扩频或带分集接收的调制方案。5. 包络检波门限效应的验证方法与仿真参数排错技巧最后这一章给出两个实用内容如何用SNR扫描曲线验证门限效应以及复现课程设计时最常踩的几个参数坑。这些技巧决定了仿真结果是“复现了课程设计”还是“照猫画虎但波形完全对不上”。5.1 用SNR扫描曲线定位门限拐点包络检波的门限效应无法在单一SNR下观察需要扫描一段信噪比范围观察失真率曲线是否出现斜率突变。snr_list 0:2:30; D_awgn zeros(size(snr_list)); D_ray zeros(size(snr_list)); for k 1:length(snr_list) % AWGN信道 r1 awgn(s_am, snr_list(k), measured); m1 filtfilt(b, a, abs(hilbert(r1))); m1 m1 - mean(m1); D_awgn(k) sum((m1(500:end) - m_t(500:end)).^2) / sum(m_t(500:end).^2); % 瑞利信道 r2 ray_env .* s_am; r2 awgn(r2, snr_list(k), measured); m2 filtfilt(b, a, abs(hilbert(r2))); m2 m2 - mean(m2); D_ray(k) sum((m2(500:end) - m_t(500:end)).^2) / sum(m_t(500:end).^2); end semilogy(snr_list, D_awgn, o-, snr_list, D_ray, s-); legend(AWGN, 瑞利衰落); xlabel(SNR / dB); ylabel(归一化失真度); grid on;曲线在小信噪比处会出现明显拐点拐点左侧失真度急剧上升这就是包络检波的门限效应。从工程角度门限对应的输入信噪比决定了系统的底噪预算。如果仿真中使用的SNR低于门限解调器输出基本不可用再去分析误码率或失真度就没有意义了。5.2 复现课程设计时容易踩的四个参数坑第一个坑是低通滤波器分母系数。原报告写的是[-1, -1.3108, 0.4936]实际模块里分母首项应为1正确写法是[1, -1.3108, 0.4936]否则整个滤波器传递函数被负号翻转。第二个坑是采样时间与载波频率的关系。解调器采样时间0.01s对应100Hz采样率低于载波180Hz的两倍离散化会导致混叠。Simulink连续时间仿真里不明显但脚本复现时建议将采样率提高到1kHz以上滤波器系数本身可以保持不变。第三个坑是过调制。直流偏置 $A_0$ 必须大于基带信号的峰值幅度。课程设计里基带信号功率0.7W对应峰值约为1.18V而 $A_01$低于基带峰值严格来说已经接近过调制边界解调波形会有些许削顶。复现时可以保留原参数但要意识到这个风险。第四个坑是去直流。AM解调输出包含 $A_0$ 对应的直流分量直接和原始基带比较失真度时直流会把误差结果抬高数倍。做性能对比前务必先减去直流并且两边信号要做幅度归一化。用MATLAB画图时如果发现解调波形整体在零线上方第一反应就应该是没去直流而不是去查滤波器参数。把这四个点处理完之后再把调制指数、基带频率和载波频率分别改一改同一套仿真链路就可以扩展成一系列对比实验。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价