ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

MATLAB六种调制方式仿真:ASK/FSK/PSK/AM/PM/FM全解析

MATLAB六种调制方式仿真:ASK/FSK/PSK/AM/PM/FM全解析 简介本资源是一套面向通信工程专业本科生与初学者的调制技术仿真实验代码包聚焦ASK、FSK、PSK、AM、PM、FM六种经典模拟与数字调制方式的原理验证与波形可视化解决理论学习中缺乏动手实践与信号对比分析的痛点。压缩包共5个MATLAB源文件.m分别对应ASK.m、FSK.m、PSK.m、AM.m及PM_FM.m集成相位与频率调制总大小仅2KB轻量易读适合在MATLAB环境中直接运行、修改参数并观察时域/频域波形变化。已有1591人学习下载广泛用于课程实验、课程设计及通信原理复习。读者可完整获得六种调制的生成逻辑、载波参数设置方法、调制信号建模过程及基础解调思路代码结构清晰、注释规范每模块均包含信号生成、调制实现与绘图展示三部分便于理解差异、横向对比性能并拓展为综合通信系统仿真。 我做了个小项目把 ASK、FSK、PSK、AM、PM、FM 这六种调制方式全部在 MATLAB 里跑通了仿真。这个需求其实很典型很多通信专业的同学、刚入行的工程师甚至准备竞赛的队伍都会遇到类似的任务——不是缺某个单一调制方式的仿真代码而是缺一套能够统一对比、互相印证、参数可调的完整框架。这套仿真我做下来的最大感受是六种调制方式看似杂但放在一起做反而比单独做更简单。因为它们的底层框架是共通的只是信号映射到载波参数的维度不同。你只要把发射端、信道、接收端解调的架构搭好再把每种调制的“调制规则”填进去整个系统就盘活了。这篇就把它完整拆开讲从数学原理到代码实现再到我实际调参踩过的坑一次性说透。1. 项目定位与整体设计思路1.1 为什么把六种调制放在一起仿真很多人一上来就纠结“先做哪个”我的建议是如果你最终目标是六种全做那从一开始就按六种一体的架构去搭建。单一调制仿真往往会把代码写成“一次性脚本”做完就扔而多调制仿真逼着你去抽象共性反而能沉淀出一套可以反复使用的通信仿真基础框架。从工程视角看这六种调制恰好覆盖了数字调制和模拟调制的两大家族数字调制ASK、FSK、PSK信号源是离散的比特流调制目的是把比特映射到载波的幅度、频率、相位上。模拟调制AM、PM、FM信号源是连续的模拟波形调制目的是把模拟信息加载到载波的对应参数上。把两者放在同一个项目里最大的收益是逼你理解它们的边界和联系。比如 ASK 的包络检波思想和 AM 的包络检波原理完全一致只是输入一个是方波基带信号、一个是连续音频信号FSK 和 FM 本质都是频率承载信息只是 FSK 是离散频点、FM 是连续频偏PSK 和 PM 也都是相位维度只是一个是绝对相位跳变、一个是相对相位偏移。这种“一次看懂六种顺便把调制的本质看穿”的效果是单独做任何一个调制仿真都达不到的。1.2 仿真工具的选型与替代方案我这次用的是 MATLAB原因很直接矩阵运算天然适合批处理信号内置的fft、filter、envelope这些函数能省掉大量底层代码画图工具也成熟。但说实话这个项目用 Python 也能做而且 Python 做出来更容易嵌入到后续的软件无线电、深度学习等应用中。给你一个对比参考对比维度MATLABPython上手难度低工具箱齐全中等需要自己装 numpy、scipy、matplotlibFFT/滤波一行fft(x)np.fft.fft(x)也不麻烦可视化图形窗口优秀matplotlib 稍显繁琐但可控性高工程扩展性弱协同和部署都不方便强可以和 FPGA、Web 服务等对接适合人群课程作业、科研验证产品原型、跨平台开发我的建议是如果你是做课程设计或者学术验证直接用 MATLAB省心如果你是打算把这个仿真进一步扩展成更大的系统比如加信道编码、加 OFDM、接入流式数据处理那用 Python 更明智。我这次的代码逻辑完全可以在两种语言之间平移核心思路各语言都能落地不必被工具绑死。1.3 系统级架构设计整个仿真我按“发射端—信道—接收端”三段式架构设计每一段都封装成独立函数方便单独调试和复用。发射端做的事情是根据调制方式把基带信号映射到载波参数上输出已调信号信道部分我做了两级可选项理想信道默认和加高斯白噪声的 AWGN 信道接收端则根据调制方式选择对应的解调方法恢复出原始信号。这套架构最大的优点是可扩展性。后面如果你要加 QPSK、16QAM只需要在“调制规则”这一层加映射函数发射机和接收机的骨架完全不用动。我实际写下来的体会是骨架搭得越干净后面调参越舒服。很多人的仿真代码最后变成“意大利面条”就是因为一开始没做分层所有逻辑全堆在主脚本里改一个参数可能要牵连到五六个地方。2. 六种调制方式的数学模型与参数设计2.1 幅度维度ASK 与 AM 的异同先看数字域的 ASK。二进制幅移键控2ASK的数学表达式是s_ASK(t) a_n · A_c · cos(2πf_c t)其中 a_n 取值为 0 或 1对应“无载波”和“有载波”两种状态。当 a_n 0 时输出为零这就是最简单的 OOK 调制。很多教材把 ASK 称为“数字版的 AM”这个类比非常准确——两者都是让载波幅度跟随基带信号变化。AM 的数学表达式则是s_AM(t) [A_0 m(t)] · cos(2πf_c t)这里 A_0 是直流偏置m(t) 是模拟基带信号。关键参数是调幅深度 m_a max|m(t)| / A_0它的取值直接决定解调能否成功m_a 1包络不越过零轴可以用包络检波恢复电路简单m_a 1刚好满调幅临界状态m_a 1过调幅包络产生相位翻转包络检波严重失真必须用相干解调。我在仿真里把 AM 的 A_0 设为 1.25m(t) 幅度控制在 ±1这样 m_a 约等于 0.8留出了安全裕量。2.2 频率维度FSK 与 FM 的映射逻辑FSK 是数字信号调制到频点2FSK 的表达式可以写成s_FSK(t) A_c · cos(2π[f_c b_n · Δf]t)b_n 取 ±1Δf 是频偏。接收端通过判断瞬时频率来恢复比特瞬时频率偏上频点判为“1”偏下频点判为“0”。这里面有个重要的设计指标叫“频移间隔”相邻频点间隔不能太小否则接收端难以区分一般要求频移间隔至少大于等于码速率。FM 则是模拟调制瞬时频率偏移量正比于基带信号s_FM(t) A_c · cos(2πf_c t 2πK_f ∫m(τ)dτ)K_f 是压控振荡器的灵敏度。这里有一个容易绕晕的地方FM 信号表达式里的相位项是基带信号的积分不是基带信号本身。原因是瞬时频率是相位的导数要让瞬时频率正比于 m(t)相位就得是 m(t) 的积分。仿真时这一步要用cumsum来实现数值积分。FM 还有一个核心参数——调频指数 β Δf_max / f_m它决定了信号带宽。窄带 FMβ 1带宽约等于 2f_m宽带 FMβ 1带宽约等于 2(β 1)f_m也就是 Carson 公式。参数设计时要注意这个约束否则你设计的“窄带 FM”可能实际占用了很宽的频谱。2.3 相位维度PSK 与 PM 的常见误区PSK 即相移键控2PSKBPSK的表达式是s_PSK(t) A_c · cos(2πf_c t φ_n)φ_n 取 0 或 π对应比特“0”和“1”。BPSK 本身很简洁但我实际做仿真时遇到一个细节问题如果直接按相位 0/π 跳变来生成信号波形在码元切换处会产生很大的瞬态跳变。这不是 BPSK 本身的问题而是理想模型和实际系统之间的差距。真实系统的信号经过带宽受限信道后相位跳变会被“平滑”如果你把理想模型直接送入非线性器件可能会产生意想不到的频谱扩展。PM 的表达式是s_PM(t) A_c · cos(2πf_c t K_p · m(t))它和 FM 的区别在于PM 的相位偏移正比于基带信号本身FM 的相位偏移正比于基带信号的积分。在正弦信号驱动下PM 和 FM 的波形很难一眼区分只有从瞬时频率的角度才能看出差别——PM 的瞬时频率是 m(t) 的导数FM 的瞬时频率是 m(t) 本身。一个常见的误区是“PSK 和 PM 既然都是相位调制那不就是一回事”。其实差别很大PSK 相位的取值集合是离散的有限个状态PM 相位的取值是完全连续的PSK 是数字调制接收端关心的是“相位落入了哪个区域”PM 是模拟调制接收端关心的是“相位的精确偏移量”。这两者的误码率分析、解调架构、抗噪性能都完全不同。2.4 参数选择的基本原则参数设计是仿真中最容易翻车的地方我总结了一个“先定频点、再定码率、最后定采样率”的顺序载波频率 f_c我取 10 kHz。这个频率适中既能看到明显的载波振荡又不至于让仿真数据量爆炸。码元速率 R_b我取 1 kbps即每个码元持续 1 ms。每个码元周期内有 10 个载波周期频谱上载波和基带能明显分开方便观察。采样率 f_s我取 100 kHz。f_s/f_c 10每个载波周期有 10 个采样点f_s/R_b 100每个码元有 100 个采样点。这个冗余对后续的滤波器设计、频谱观察都非常友好。仿真时长10 个码元共 10 ms总共 1000 个采样点。数据量小运算快画图时也能看清细节。实际经验是如果你想观察误码率曲线仿真时长要增长到 10000 比特以上才有统计意义但如果只是观察波形、验证原理10 个码元就足够了。不要一上来就搞几十万个采样点数据量大反而不好调试。注意采样率必须遵守奈奎斯特采样定理即至少大于最高信号频率的两倍。在 FM 中最高频率是载频加上最大频偏如果你设计的频偏偏大原本设定的采样率可能不够要按 2(f_c Δf_max) 的上限重新核算。3. 仿真实现全过程3.1 基础框架先搭一个通用的信号发生环境我先把整个工程的公共部分写好这部分对所有调制方式都适用。首先是参数设定% 通用参数配置 fs 100e3; % 采样率 100 kHz fc 10e3; % 载波频率 10 kHz Rb 1e3; % 码元速率 1 kbps Tb 1 / Rb; % 码元周期 1 ms t_total 10 * Tb; % 仿真时长10 个码元 t 0 : 1/fs : t_total - 1/fs; N length(t); % 总采样点数接下来是通用调制函数框架我定义了一个统一的接口function [s_mod, params] modulator(mod_type, bit_seq, t, fc, fs) % mod_type: ASK, FSK, PSK, AM, PM, FM % bit_seq: 二进制比特序列数字调制使用 % t: 时间向量 % fc: 载波频率 % fs: 采样率 switch mod_type case ASK [s_mod, params] ask_mod(bit_seq, t, fc, fs); case FSK [s_mod, params] fsk_mod(bit_seq, t, fc, fs); % ... 其他方式类似 end end这个接口的好处是主程序逻辑统一后续如果要做批量对比只需要循环调用不同的 mod_type 即可。所有调制函数都返回s_mod和params前者是已调信号后者是解调需要的辅助参数比如包络检波的参考幅度、FSK 的频偏量。3.2 ASK 与 AM 的仿真实现细节ASK 的调制实现是最直观的。我把比特序列通过repmat扩展到采样域然后和载波相乘function s_ask ask_mod(bit_seq, t, fc, fs) Tb 1 / 1000; % 码元周期 N_bit length(bit_seq); N_sample_per_bit round(Tb * fs); % 将比特序列扩展到采样域 bit_signal reshape(repmat(bit_seq, N_sample_per_bit, 1), 1, []); bit_signal bit_signal(1:length(t)); % 对齐长度 % 载波 carrier cos(2 * pi * fc * t); % ASK 调制幅度键控 s_ask bit_signal .* carrier; end这里有个工程细节需要提醒repmat展开后的长度可能和 t 的长度不一致最后必须做一次截断或补零。如果采样率不是码速率的整数倍还可能需要对 t 做同步插值。我的经验是设计阶段就把 fs 和 Rb 设为整数倍关系能省掉大量边界处理的麻烦。解调端我用包络检波。实现方法是取信号的希尔伯特包络然后用滑动窗口做判决function bit_rec ask_demod(s_ask, fs, Tb) % 提取包络 env abs(hilbert(s_ask)); % 对包络进行低通滤波消除高频纹波 [b, a] butter(3, 0.1); % 截止频率约为 fs 的 0.1 倍 env_filtered filtfilt(b, a, env); % 抽样判决 n_sample_per_bit round(Tb * fs); mid_points round(n_sample_per_bit/2) : n_sample_per_bit : length(env_filtered); sample_vals env_filtered(mid_points(1:end-1)); % 判决门限取最大最小值中点 threshold (max(sample_vals) min(sample_vals)) / 2; bit_rec sample_vals threshold; end包络检波的门限设置是个可以改进的细节。最稳妥的做法是用最大最小值的中点但这是在已知信号幅度范围的情况下。工程上更常用的是自适应门限——用滑动窗口内信号能量的统计值做门限可以应对信道衰落。如果你只是做传播理论验证静态门限就够用但如果你想模拟真实信道建议换成自适应门限。AM 的调制实现更简单function s_am am_mod(m_t, t, fc, A0) carrier cos(2 * pi * fc * t); s_am (A0 m_t) .* carrier; % 注意 A0 要大于 max(|m(t)|) endm_t 是模拟基带信号我用了一个频率为 1 kHz 的正弦波作为测试信号。AM 解调用包络检波后还需要减去直流偏置 A0 才能恢复原始信号。这个“去掉直流”的步骤经常被忽略导致恢复出的信号看起来总是偏高。3.3 FSK 与 FM 的仿真实现细节FSK 调制有两种生成方法我用的是直接生成法每个码元周期内根据比特选择不同的载波频率。function s_fsk fsk_mod(bit_seq, t, fc, fs, delta_f) Tb 1 / 1000; N_bit length(bit_seq); N_sample_per_bit round(Tb * fs); % 扩展比特到采样域 bit_signal reshape(repmat(bit_seq, N_sample_per_bit, 1), 1, []); bit_signal bit_signal(1:length(t)); % 根据比特选择瞬时频率 inst_freq fc delta_f * (2 * bit_signal - 1); % 1 - fcdf, 0 - fc-df % 相位是频率的积分 phase 2 * pi * cumsum(inst_freq) / fs; s_fsk cos(phase); end注意代码里的这行注释——“相位是频率的积分”。这就是 FSK 和 FM 实现中最重要的共性你不能直接把cos(2*pi*inst_freq.*t)这样写那样会引入相位不连续的拼接误差。正确做法是用cumsum(inst_freq)/fs先做数值积分再取 cos这样生成的 FSK 信号相位连续频谱更干净也更接近真实调制器的输出。FSK 解调我用的是非相干解调法——两个带通滤波器加包络检波function bit_rec fsk_demod(s_fsk, fs, fc, delta_f, Tb) % 频率 f1 fc df 对应比特 1 % 频率 f0 fc - df 对应比特 0 [b1, a1] butter(4, [(fcdelta_f-500)/(fs/2), (fcdelta_f500)/(fs/2)], bandpass); [b0, a0] butter(4, [(fc-delta_f-500)/(fs/2), (fc-delta_f500)/(fs/2)], bandpass); env1 abs(hilbert(filter(b1, a1, s_fsk))); env0 abs(hilbert(filter(b0, a0, s_fsk))); n_sample_per_bit round(Tb * fs); mid_points round(n_sample_per_bit/2) : n_sample_per_bit : length(env1); % 比较两个通路的包络幅度 bit_rec env1(mid_points(1:end-1)) env0(mid_points(1:end-1)); end这个解调方法叫“非相干正交解调”它不需要获取载波的绝对相位只用包络的比较结果做判决实现简单、对频率偏移不敏感。实际工程中FSK 接收机大量使用这种结构因为它的鲁棒性比相干解调强得多。FM 调制是这个项目里最“绕”的一个核心就是那个积分。我实现的代码如下function s_fm fm_mod(m_t, t, fc, fs, Kf) % 相位调制先积分 phase 2 * pi * fc * t 2 * pi * Kf * cumsum(m_t) / fs; s_fm cos(phase); end这里的 Kf 单位是 Hz/V表示每 1V 的基带信号幅度能产生多少 Hz 的频偏。我在仿真里设 Kf 500对应 1V 信号产生 500 Hz 的频偏。采样率 100 kHz载频 10 kHz最坏情况下瞬时频率是 10.5 kHz依然远小于奈奎斯特上限不会出问题。FM 解调我是用“微分鉴频器”实现的原理是FM 信号是等幅信号但频率变化会体现在瞬时相位的变化率上只要对信号做微分再用希尔伯特变换求出瞬时频率就可以恢复基带信号。function m_rec fm_demod(s_fm, fs, fc, Kf) % 微分鉴频 diff_s [0, diff(s_fm)]; % 希尔伯特变换求瞬时频率 analytic_s hilbert(s_fm); inst_freq [0, diff(unwrap(angle(analytic_s))) * fs / (2*pi)]; % 去除载波频率偏移 m_rec (inst_freq - fc) / Kf; % 低通滤波去噪 [b, a] butter(3, 0.1); m_rec filtfilt(b, a, m_rec); end我实际写代码时第一次尝试只用diff然后包络检波结果噪声很大。后来改用“希尔伯特求瞬时频率”的思路一切都干净了。这套方法在工业级的 FM 解调器里也是主流做法。3.4 PSK 与 PM 的仿真实现细节BPSK 的调制实现很直接——相位 0 和 π 的切换相当于信号乘以 1 或 -1function s_psk psk_mod(bit_seq, t, fc, fs) Tb 1 / 1000; N_bit length(bit_seq); N_sample_per_bit round(Tb * fs); % 比特到双极性电平1 - 1, 0 - -1 polar_signal 2 * bit_seq - 1; polar_signal reshape(repmat(polar_signal, N_sample_per_bit, 1), 1, []); polar_signal polar_signal(1:length(t)); carrier cos(2 * pi * fc * t); s_psk polar_signal .* carrier; endBPSK 的波形特征是相位跳变处载波会出现反转。从时域波形看码元边界处可能出现“过零翻转”这正是相位调制的标志。BPSK 解调我用了相干解调因为非相干方法对 BPSK 不适用BPSK 的相位跳变包含了全部信息不能用幅度或频率包络来检测function bit_rec psk_demod(s_psk, fs, fc, Tb) % 本地载波 t (0:length(s_psk)-1) / fs; local_carrier cos(2 * pi * fc * t); % 乘法器 mix s_psk .* local_carrier; % 低通滤波 [b, a] butter(4, 0.1); baseband filtfilt(b, a, mix); % 抽样判决 n_sample_per_bit round(Tb * fs); mid_points round(n_sample_per_bit/2) : n_sample_per_bit : length(baseband); sample_vals baseband(mid_points(1:end-1)); bit_rec sample_vals 0; end相干解调的前提是接收端能产生与发送端同频同相的本地载波。实际系统中这需要载波同步环路比如 Costas 环来实现但仿真中我直接假设理想同步。这也提醒了你——如果在真实信道中做 BPSK 接收载波同步的算法复杂度可能超过调制本身。PM 的调制实现和 FM 只差一个“是否积分”的区别function s_pm pm_mod(m_t, t, fc, Kp) phase 2 * pi * fc * t Kp * m_t; % 注意没有积分 s_pm cos(phase); endKp 是相位偏移常数单位是 rad/V。我取 Kp 1即 1V 基带信号造成 1 弧度的相位偏移。PM 解调通常也要先求瞬时相位再去除载波相位项仿真中可以用和 FM 类似的微分鉴频结构只是恢复了相位变化后要再做一次微分才能得到基带信号。3.5 一体化主程序与结果观察仿真的最后我把六种调制方式的发射端、信道、接收端全部串起来写成一个主脚本。运行时逐个调用 modulator加噪声再调用对应 demodulator画出六个子图对比。主程序的关键逻辑大致如下% 生成数据 bit_seq randi([0 1], 1, 10); % 数字调制使用 t_analog 0 : 1/fs : t_total - 1/fs; % 模拟调制使用 m_t 0.8 * sin(2 * pi * 1000 * t_analog); % 模拟基带信号 % 六种方式统一跑一遍 mod_types {ASK, FSK, PSK}; for k 1:3 s modulator(mod_types{k}, bit_seq, t, fc, fs); % 加噪声可选 % s awgn(s, 20); % SNR 20dB bit_rec demodulator(mod_types{k}, s, fc, fs, Tb); % 画图 subplot(3,2,k); plot(t, s); title(mod_types{k}); end观察波形时我建议把注意力放在几个关键位置ASK 看码元边界处的幅度跳变FSK 看不同码元周期内波形疏密变化PSK 看相位翻转时刻的载波形状变化。看熟了这三种数字调制的波形特征你就能快速从示波器上分辨实际信号是哪种调制方式。4. 常见问题与调试经验4.1 采样率与频谱泄漏的坑这是我在实验中最常遇到的问题。频谱泄漏在 FFT 分析和信号观察时会带来大量干扰甚至导致误判。我的经验法则是把信号频率和采样率设计为整数倍关系。如果 f_c 10 kHz、f_s 100 kHz则在 FFT 中载波会精确落在某一个频点上不会扩散到相邻频点如果设计成 f_c 10 kHz、f_s 44.1 kHz音频标准采样率载波频率和 FFT 频率分辨率不匹配频谱就会出现明显的“栅栏效应”和泄漏。用fft画图时你会看到载波附近一片杂乱无章的谱线而不是干净的脉冲。另外FSK 的频偏选择要避开和码率的简单倍数关系。如果 Δf 正好等于 Rb频谱上两个频点的旁瓣会互相干扰判决的可靠性下降。我实测下来 Δf 取 2~3 倍 Rb 比较舒服既能保证两个频率明显区分又不会让带宽过于膨胀。4.2 包络检波与相干解调的选择做 ASK 解调时我踩过一个坑——直接对调制信号做abs当包络用结果波形上有一层密集的载波纹波抽样点稍微偏一点就会判错。后来才知道正确做法是先从希尔伯特变换求得解析信号再取模或者先用带通滤波器把噪声滤掉再做包络检波。这个纹波问题在示波器上看起来只是“毛刺”但对误码率的影响是致命的。包络检波和相干解调的选择原则我总结成如下表调制方式推荐解调方式原因ASK包络检波实现简单幅度信息完整FSK非相干滤波器组包络无需载波同步抗频率偏移强PSK相干解调非相干无法区分 0/π 相位AM包络检波电路最简单经典方案PM相干/鉴相需要提取瞬时相位FM微分鉴频/锁相环实现成熟抗噪性好4.3 相位连续性与“咔哒”声问题FSK 和 FM 仿真中最容易被忽略的细节是相位连续性。如果你直接按“每个比特独立生成一段波形再拼接”的方式实现码元边界处会听到明显的“咔哒”声频谱上也会冒出大量杂散分量。这个问题不仅影响仿真美观在实际的无线通信系统中还会增加邻道干扰。正确做法就是我在前面强调的用cumsum对瞬时频率做积分保证相位在任意时刻都是连续的。这个过程对应到硬件就是压控振荡器的连续调频行为——VCO 的输出相位本来就是连续的即使输入电压发生阶跃输出频率也是连续过渡的。4.4 问题速查表现象可能原因处理方法波形有毛刺采样率不足或滤波器阶数不合理提高 fs 至载频的 10 倍以上调整滤波器截止频率FFT 频谱杂乱帧长和信号频率不满足整数周期关系对时间序列做整周期截取或用窗函数AM 解调后信号偏置忘了去掉直流分量 A0解调后输出减去 A0FSK 误判率高两个频点间隔不够增大 Δf使间隔 ≥ 2 倍码速率PSK 解调星座图旋转本地载波相位未同步增加 Costas 环或理想相位补偿FM 解调后噪声大微分操作放大了高频噪声增加低通平滑输出前做深度滤波波形首尾跳变滤波器初始条件不为零使用filtfilt替代filter我最想强调的一点是filtfilt和filter的差别很多人一开始没注意。filter会在初始时刻产生瞬态响应导致波形开头一段是坏的filtfilt是零相位滤波开头和结尾的瞬态都很小。我在整个仿真中统一用了filtfilt这让所有解调输出的开头部分都干净很多。4.5 参数验证的经验流程最后说说我验证仿真正确性的一套流程这比任何单独代码都更值得参考。首先画已调信号时域波形用眼睛检查调制特征是否符合预期ASK 看包络FSK 看疏密PSK 看翻转。然后画频谱确认载波位置和带宽数量级正确用 Carson 公式和带宽公式估算预期值。接着跑解调把恢复信号和原始信号叠画观察是否基本重合。最后加噪声扫参数如果解调性能随信噪比变化符合误码率理论曲线那说明整体链路搭建是可靠的。这套流程可以扩展到任何通信仿真项目。仿真的意义不仅仅在于“能画出波形”更重要的是让你从数学公式到工程实现建立完整的直觉。走到那一步你才算真正把这个项目做透了。本文还有配套的精品资源点击获取
返回列表