
简介这份课程设计文档围绕MATLAB调幅广播系统仿真完整呈现从任务书到实现与验证的流程。内容涵盖MATLAB与Simulink建模环境简介、调幅广播系统模型与参数指标、接收滤波器设计、加性高斯噪声信道下的信噪比计算以及包络检波与相干解调两种方式的性能仿真比较并配套可运行的脚本程序与模型文件说明适合通信工程、电子信息类专业学生完成课程设计或复习通信原理时参考。资源为单个doc文档共155KB结构按引言、系统模型、仿真建立、结果分析与总结编排目录清晰便于对照任务要求逐项查阅。目前已有860人学习下载其参考价值在同类课程设计中已得到验证。读者从中可获取一套完整的中波调幅广播系统仿真方案包括参数设置、模块连接思路、噪声方差计算方法和输出信噪比对比曲线有助于快速搭建自己的Simulink模型并完成结课报告。1. 调幅广播系统仿真设计课设题在考什么MATLAB 方案怎么搭调幅广播系统的 MATLAB 仿真设计难点从来不在调制那三行代码。真正拉开分数的是参数和链路调幅指数取多少包络才不削顶、采样率比载波频率高多少倍才不会混叠、低通滤波器截止频率放在哪里才能既保住消息又滤掉载波残余——任何一个参数拍脑袋画出来的波形都会以很隐蔽的方式出错。这个课设题本质上是把通信原理课里的调制、解调、噪声、滤波四条主线压进一个仿真工程用 MATLAB 一次性跑通并解释每一步。适合正在做该课设的通信、电子、自动化专业学生也适合想快速搭一条调幅广播链路做算法验证的工程师。下文按可复现顺序展开先定数学模型和参数再写调制解调代码随后加噪并设计低通滤波器最后落到频谱、调幅指数和阶跃响应三个验收技巧上。2. 调幅广播的数学建模与 MATLAB 仿真参数设计调幅广播系统仿真设计的第一步不是写代码而是把模型和参数敲定。模型错了后边代码再漂亮也救不回来参数拍脑袋则会让后续滤波、解调、测量全部在错误前提下展开。这一章把数学表达式、调幅指数、采样率、仿真时长一次定清楚附上可直接复制的参数块。2.1 标准调幅信号表达式与调幅指数 ma 的物理含义标准调幅DSB-AM的时域表达式是后面所有代码的基准s_AM(t) (A_c m(t)) · cos(2π f_c t) A_c[1 m_a · m_n(t)] · cos(2π f_c t)其中m_n(t)是归一化消息A_c是载波幅度。对单音消息m(t) A_m·cos(2π f_m t)调幅指数m_a A_m / A_c。它的物理含义是包络相对载波幅度的最大偏移比例m_a ≤ 1时包络A_c m(t)恒大于零检波后能完整恢复消息m_a 1时包络过零并发生相位反转包络检波输出会削顶失真这是广播系统必须避免的过调幅状态。m_a取值大边带功率占比高、功率利用率好但抗噪声裕量变小且容易过调取值小则相反载波白白占用大部分发射功率。广播工程惯例取 0.30.8课程设计里建议做 0.3、0.5、0.8 三组对比这是报告里最直观的一组实验。2.2 载波频率、消息频率与采样率的选择方法仿真参数不是随便填的三条硬规则先记住第一采样率fs必须远大于2·fc仿真里一般取载波频率的 820 倍直接拿 44.1 kHz 音频采样率去仿 25 kHz 载波必然混叠第二fc / fm至少大于 10否则上下边带挤在载波附近后续滤波器物理上分不开第三仿真时长T至少包含 10 个消息周期频谱分析时频率分辨率Δf 1/T才够细。下面是一组稳定可靠的默认参数适合大多数课设要求参数符号推荐取值选择理由消息频率fm1 kHz处于语音频段上沿代表单音消息载波频率fc25 kHzfc/fm25边带分离度好采样率fs200 kHz为 fc 的 8 倍给滤波留过渡带调幅指数ma0.5功率与失真折中包络不过零仿真时长T10 ms含 10 个消息周期Δf100 Hz2.3 用 MATLAB 生成消息信号、载波与已调波的代码% 调幅广播系统仿真参数与信号生成 fs 200e3; % 采样率 200 kHz fc 25e3; % 载波频率 25 kHz fm 1e3; % 消息频率 1 kHz T 10e-3; % 仿真时长 10 ms t (0 : 1/fs : T); % 时间列向量2001 个点 t(end) []; % 去掉末尾点凑整 2000 点 Ac 1; % 载波幅度 ma 0.5; % 调幅指数 Am ma * Ac; % 单音消息幅度 mt Am * cos(2*pi*fm*t); % 消息信号 m(t) ct Ac * cos(2*pi*fc*t); % 载波 c(t) s_am (Ac mt) .* cos(2*pi*fc*t); % 标准调幅已调波代码里两个习惯值得保持时间向量用列向量后续filter、pspectrum、awgn都按列处理省去一堆转置(Ac m(t)).*ct的写法比教科书里的Ac*(1ma*mn).*ct更直接想换消息波形时只改mt就行。200 kHz 采样率对 25 kHz 载波意味着每个载波周期采 8 个点包络峰值处的分辨率足够画图观察。提示如果课设要求用随机消息或语音信号代替单音可以在生成mt后先过一遍 1 kHz 低通再调幅但建议先拿单音把链路跑通再换复杂消息。3. 用 MATLAB 实现 AM 调制、包络检波与同步解调参数定好之后调制端和解调端各有几行关键代码。调制端要核对包络形状解调端要在包络检波和同步检波之间二选一或做对比最后用ma 1的过调幅实验把失真讲清楚。3.1 调制端波形核对与 matlab 画图习惯生成s_am后第一件事是画图核对别急着解调。matlab 画图时把横轴换算成毫秒显示曲线会更易读figure(Color,w); subplot(3,1,1); plot(t*1e3, mt); ylabel(m(t)); title(消息信号); subplot(3,1,2); plot(t*1e3, ct); ylabel(c(t)); title(载波 c(t)); subplot(3,1,3); plot(t*1e3, s_am); ylabel(s_{AM}(t)); xlabel(t / ms); title(标准调幅已调波); hold on; plot(t*1e3, Ac mt, r--); % 上包络 plot(t*1e3, -Ac - mt, r--); % 下包络波形核对要点是包络线Ac mt和-Ac - mt恰好包住已调波且用ma 0.5时包络最低点离零轴还有一半载波幅度。如果包络贴到零轴说明调幅指数偏大如果包络线穿到另一侧说明已经过调幅。保存图片时用exportgraphics(gcf, mod_wave.png, Resolution, 300)报告里插图清晰度远比截图高。3.2 包络检波与同步检波的完整代码与对比广播接收机实际用的是包络检波MATLAB 里用取绝对值加低通滤波来近似理想二极管检波% 包络检波abs 近似二极管整流低通滤出包络 fc_lpf 2e3; % 低通截止频率 2 kHz [b, a] butter(4, fc_lpf/(fs/2), low); % 四阶 Butterworth r_env abs(s_am); % 取绝对值 m_env filter(b, a, r_env); % 滤出低频包络 m_env m_env - mean(m_env); % 去掉检波引入的直流消息最高频率是 1 kHz低通截止频率取 2 kHz留出一倍过渡带25 kHz 的载波分量会被滤掉。filter会引入群延迟比较波形时如果发现解调输出相对原始消息整体平移这是正常现象测量信噪比时改用filtfilt消除它。同步检波是另一条路线乘同频同相载波再低通% 同步检波乘以本地载波产生 2*fc 分量后滤除 s_sync s_am .* cos(2*pi*fc*t); % 相干解调 m_sync 2 * filter(b, a, s_sync); % 幅度补偿因子 2 m_sync m_sync - mean(m_sync);乘载波后cos²项产生直流和2fc分量低通滤除后幅度只剩一半所以乘 2 补偿。同步检波的前提是本地载波与发送端严格同频同相一旦有相位差输出幅度会按cos(Δφ)衰减。对比项包络检波同步检波实现复杂度低abs 低通即可高需要载波同步本地载波不需要必须同频同相门限效应明显理论门限更低广播接收机实际采用成本高少用3.3 过调幅失真仿真ma 超过 1 会怎样课设报告里放一组过调幅对比能直接体现对原理的理解深度ma2 1.2; % 过调幅指数 s_over (Ac ma2*Ac*cos(2*pi*fm*t)) .* cos(2*pi*fc*t); m_over filter(b, a, abs(s_over)); % 包络检波 m_over m_over - mean(m_over); figure(Color,w); plot(t*1e3, m_over, LineWidth, 1.2); hold on; plot(t*1e3, mt, r--, LineWidth, 1.2); legend(检波输出, 原始消息); xlabel(t / ms); title(ma 1.2 过调幅失真);ma 1.2时包络过零后相位反转取绝对值会把负半周翻上来检波输出在过零处出现削顶和毛刺与原始消息明显偏离。这组图放在报告里配合一句广播发射端必须限制调幅指数不超过 1比任何文字说明都有说服力。4. 加噪信道与二阶低通滤波器的 MATLAB 仿真信道加噪和滤波器设计是调幅广播系统仿真里最容易扣分的两个点。加噪要分清输入信噪比的定义滤波器要解释阶数和截止频率为什么这么选最后用一组 SNR 扫描把门限效应画出来。4.1 awgn 函数加噪与手动加噪的两种方式最省事的加噪方式是通信工具箱的awgnsnr_in 15; % 输入信噪比 15 dB r_noisy awgn(s_am, snr_in, measured); % 测量信号功率后加噪第三个参数measured表示先测量s_am的实际功率再加对应强度的噪声。漏掉它awgn默认信号功率为 0 dBW加出来的噪声强度会和预期差很多。如果 MATLAB 没装通信工具箱手动加噪同样可靠Ps bandpower(s_am); % 信号功率 Pn Ps / (10^(snr_in/10)); % 由 SNR 反推噪声功率 n sqrt(Pn) * randn(size(t)); % 高斯白噪声 r_manual s_am n; % 加噪信号这里bandpower属于 DSP System Toolbox若两个工具箱都没有就用Ps mean(s_am.^2)自己算结果一致。信噪比定义是10·log10(Ps/Pn)dB 是功率比幅度上要开根号——这是加噪代码里最常见的错误点。4.2 二阶低通有源滤波器设计截止频率与 Q 值包络检波和同步检波都依赖低通滤波器。在硬件上这条滤波器对应二阶低通有源滤波器典型实现是 Sallen-Key 结构其归一化传输函数为H(s) ω₀² / (s² (ω₀/Q)·s ω₀²)二阶 Butterworth 对应Q √2/2 ≈ 0.707也就是最大平坦响应。MATLAB 里不必手写差分方程一行butter直接得到离散系数fc_lpf 2e3; % 截止频率 2 kHz [b2, a2] butter(2, fc_lpf/(fs/2), low); % 二阶滤波器 [h, fw] freqz(b2, a2, 1024, fs); % 幅频响应fw 单位 Hz plot(fw/1e3, 20*log10(abs(h))); grid on; xlabel(kHz); ylabel(dB); title(二阶低通滤波器幅频响应);二阶滤波器滚降是 12 dB/oct从 2 kHz 到 25 kHz 载波处约 12.5 倍频程衰减约 44 dB四阶 Butterworth 衰减翻倍到约 87 dB。选几阶取决于解调输出的干净程度要求滤波器阶数滚降斜率25 kHz 处近似衰减适用场景二阶12 dB/oct约 44 dB演示有源滤波器结构四阶24 dB/oct约 87 dB课设默认选择波形干净六阶36 dB/oct约 130 dB需要严格滤除载波残余课设一般用四阶就够代码里对应第 3 章的[b, a] butter(4, ...)。用二阶时注意载波泄漏在时域上表现为包络线上的细密波纹别误判成噪声。4.3 不同信噪比下的解调输出对比与门限效应把输入 SNR 从 -10 dB 扫到 30 dB记录每个点解调输出的信噪比是这门课设最有信息量的一张图snr_list -10:5:30; % 输入 SNR 扫描范围 snr_out zeros(size(snr_list)); for k 1:numel(snr_list) r awgn(s_am, snr_list(k), measured); % 加噪 m_r filtfilt(b, a, abs(r)); % 零相位滤波的包络检波 m_r m_r - mean(m_r); snr_out(k) 10*log10(bandpower(mt) / var(m_r - mt)); end plot(snr_list, snr_out, -o, LineWidth, 1.5); grid on; xlabel(输入 SNR / dB); ylabel(输出 SNR / dB); title(包络检波输出信噪比曲线);这里用filtfilt而不是filter是为了消除群延迟对m_r - mt误差计算的影响。曲线在低输入 SNR 处会出现明显拐弯拐点之后输出信噪比急剧恶化这就是包络检波的门限效应。实验现象的定性规律如下输入 SNR 区间解调输出表现报告里怎么写-100 dB包络被噪声淹没语音不可辨识低于门限检波失效010 dB包络轮廓可辨毛刺明显门限效应过渡区1030 dB包络平滑失真小正常接收区近似线性5. 课设验收技巧频谱分析、调幅指数测量与滤波器阶跃响应验证5.1 用 pspectrum 查看已调波与解调输出的频谱标准调幅信号的频谱由载波线谱和上下边带组成用pspectrum直接看功率谱[pxx, f] pspectrum(s_am, fs, power); plot(f/1e3, 10*log10(pxx)); grid on; xlabel(kHz); ylabel(dBm); title(调幅已调波功率谱);谱图上 25 kHz 处是载波谱线24 kHz 和 26 kHz 是上下边带三根谱线间距恰好等于消息频率 1 kHz。调幅指数越小载波谱线相对边带越高——载波功率占总功率的比例是1 / (1 ma²/2)ma 0.5时载波占了约 89% 的功率这正是标准调幅功率利用率低的直观证据。5.2 从包络波形反推调幅指数的测量方法这是实验室用示波器测调幅度的同款公式直接写进报告作为验证手段env abs(hilbert(s_am)); % 解析信号包络 ma_est (max(env) - min(env)) / (max(env) min(env)); fprintf(设定 ma %.2f实测 ma %.4f\n, ma, ma_est);hilbert得到的是平滑包络比直接对已调波取绝对值的抖动小。测量值与设定值的相对误差在 2% 以内说明调制端代码和参数设置正确。把ma 0.3 / 0.5 / 0.8三组的设定值和测量值列成表就是报告里仿真验证一节的核心数据。5.3 用阶跃响应验证滤波器截止频率并量化噪声滤波器参数对不对除了看幅频响应还可以看阶跃响应stepz(b, a, 200); % 阶跃响应200 个点二阶低通的上升时间约为tr ≈ 0.35 / fc_lpf对 2 kHz 截止频率大约 0.175 ms。阶跃响应上升过慢说明截止频率偏低、包络被压钝上升过快说明带宽过宽、载波残余多。这个定量的检查方法比肉眼判断波形更可靠。噪声水平的量化可以补一个一维数据信息熵指标熵越大说明信号越接近随机噪声function H signal_entropy(x) x x(:); x x - mean(x); p histcounts(x, 64) / numel(x); p p(p 0); H -sum(p .* log2(p)); end H_clean signal_entropy(mt); % 原始消息熵 H_noisy signal_entropy(m_r); % 解调输出熵把干净消息和解调输出的熵值做个对比低 SNR 下熵差明显拉大这比一句波形变差了更有说服力也是滤波器设计质量的量化佐证。本文还有配套的精品资源点击获取