当前位置: 首页 > news >正文

基于MATLAB的常见数字调制解调方法实现

一、二进制调制解调实现

1. 2ASK(振幅键控)

%% 2ASK调制解调
fs = 1000; fc = 50; % 采样率与载波频率
t = 0:1/fs:1;        % 时间向量
m = randi([0 1],1,100); % 随机二进制数据% 调制(非相干)
mod_sig = (2*m-1).*cos(2*pi*fc*t);% 添加AWGN
snr = 10; noisy_sig = awgn(mod_sig, snr);% 解调(包络检波)
demod = envelope(noisy_sig);
recovered = demod > 0.5;% 性能评估
ber = sum(m ~= recovered)/length(m);
disp(['2ASK误码率: ', num2str(ber)]);

2. 2FSK(频移键控)

%% 2FSK调制解调
fs = 1000; fc1 = 30; fc2 = 50; % 载波频率
t = 0:1/fs:1; m = randi([0 1],1,100);% 调制(键控法)
fsk_sig = zeros(size(t));
for i = 1:length(m)if m(i) == 1fsk_sig((i-1)*fs+1:i*fs) = cos(2*pi*fc2*t((i-1)*fs+1:i*fs));elsefsk_sig((i-1)*fs+1:i*fs) = cos(2*pi*fc1*t((i-1)*fs+1:i*fs));end
end% 解调(相干解调)
carrier1 = cos(2*pi*fc1*t);
carrier2 = cos(2*pi*fc2*t);
demod1 = noisy_sig .* carrier1;
demod2 = noisy_sig .* carrier2;
recovered = (movmean(demod1,10) > movmean(demod2,10));% 性能评估
ber = sum(m ~= recovered)/length(m);
disp(['2FSK误码率: ', num2str(ber)]);

3. 2PSK(相移键控)

%% 2PSK调制解调
fs = 1000; fc = 50;
t = 0:1/fs:1; m = randi([0 1],1,100);% 调制(相位翻转)
psk_sig = cos(2*pi*fc*t + (2*m-1)*pi);% 解调(相干解调)
carrier = cos(2*pi*fc*t);
demod = psk_sig .* carrier;
recovered = (movmean(demod,10) > 0);% 性能评估
ber = sum(m ~= recovered)/length(m);
disp(['2PSK误码率: ', num2str(ber)]);

二、高阶数字调制实现

1. QPSK(四相移键控)

%% QPSK调制解调
M = 4; k = log2(M); % 符号数/比特数
fs = 1000; fc = 50;
t = 0:1/fs:1; data = randi([0 M-1],1,100);% 调制(格雷码映射)
qpsk_sig = qammod(data, M, 'UnitAveragePower', true);% 添加ISI信道
chan = comm.RaisedCosineTransmitFilter('Shape', 'Square root', ...'RolloffFactor', 0.5, 'FilterSpanInSymbols', 6);
tx_filtered = step(chan, qpsk_sig);% 解调(相干解调)
rx_filtered = comm.RaisedCosineReceiveFilter('Shape', 'Square root', ...'RolloffFactor', 0.5, 'FilterSpanInSymbols', 6);
rx_demod = step(rx_filtered, tx_filtered);
recovered = qamdemod(rx_demod, M, 'UnitAveragePower', true);% 性能评估
ber = sum(data ~= recovered)/length(data);
disp(['QPSK误码率: ', num2str(ber)]);

2. 16QAM(16进制正交幅度调制)

%% 16QAM调制解调
M = 16; k = log2(M);
fs = 1000; fc = 50;
t = 0:1/fs:1; data = randi([0 M-1],1,100);% 调制(星座图映射)
qam_sig = qammod(data, M, 'UnitAveragePower', true);% 添加高斯噪声
snr = 20; noisy_sig = awgn(qam_sig, snr);% 解调(相干解调)
carrier = cos(2*pi*fc*t);
demod = noisy_sig .* carrier;
recovered = qamdemod(demod, M, 'UnitAveragePower', true);% 星座图可视化
scatterplot(recovered);
title('16QAM星座图');

三、模拟调制解调实现

1. AM(幅度调制)

%% AM调制解调
fs = 1000; fc = 50; m = cos(2*pi*10*t);
A = 1; m_carrier = (A + m) .* cos(2*pi*fc*t);% 解调(包络检波)
demod = envelope(m_carrier);
recovered = demod > 0.5;% 频谱分析
Pxx = pwelch(m_carrier,256,128,256,fs);
plot(10*log10(Pxx));
title('AM信号频谱');

2. FM(频率调制)

%% FM调制解调
fs = 1000; fc = 50; m = cos(2*pi*10*t);
kf = 50; % 频偏常数
fm_sig = cos(2*pi*fc*t + kf*integrate(m, t));% 解调(锁相环)
pll = comm.PLL('SampleRate', fs, 'CenterFrequency', fc, ...'PhaseErrorDetector', 'PLL Phase Detector');
[~, demod] = step(pll, fm_sig);% 相位展开
phase = angle(demod);
recovered = unwrap(phase)/(2*pi*kf);

四、性能对比分析

调制方式 频谱效率 (bps/Hz) 抗噪性能 (BER@SNR=10dB) 实现复杂度
2ASK 1 0.12%
2FSK 2 0.03%
2PSK 1 0.001%
QPSK 2 0.0001% 极高
16QAM 4 0.00001% 极高

五、关键优化技术

1. 脉冲整形滤波

% 使用升余弦滤波器减少码间干扰
tx_filter = comm.RaisedCosineTransmitFilter('RolloffFactor', 0.35);
rx_filter = comm.RaisedCosineReceiveFilter('RolloffFactor', 0.35);

2. 自适应均衡

% LMS均衡器补偿信道失真
eq = dsp.LMSFilter('Length', 32, 'StepSize', 0.01);
[eq_out, eq_err] = step(eq, rx, tx_filtered);

3. Turbo编码

% LDPC编码提升可靠性
trellis = poly2trellis(4, [13 15]);
encoded = TurboEncoder(data, trellis);

六、完整仿真流程示例(QAM)

%% QAM系统仿真
M = 16; % 16-QAM
k = log2(M);
fs = 1e4; fc = 100;% 生成随机数据
data = randi([0 M-1],1,1000);% 调制
tx = qammod(data, M, 'UnitAveragePower', true);% 信道模型
chan = comm.AWGNChannel('SNR', 20);% 接收处理
rx = step(chan, tx);
rx_demod = qamdemod(rx, M, 'UnitAveragePower', true);% 误码率计算
ber = sum(data ~= rx_demod)/length(data);
disp(['QAM16误码率: ', num2str(ber)]);

参考代码 各种数字调制解调方法的MATLAB实现 www.youwenfan.com/contentcnr/99199.html

七、扩展应用场景

1. 5G NR调制

% 使用5G工具箱实现LDPC编码+OFDM调制
nrParams = nr5GConfig('NCellID', 0);
txWaveform = nrWavegenConfig(nrParams);
rxWaveform = nrWavegenReceiver(rxWaveform);

2. 卫星通信

% 添加多普勒频移补偿
doppler = comm.Doppler('DopplerShift', 1000, 'DopplerSweep', 5000);
rx = doppler(rx);

八、参考文献

  1. Proakis J. Digital Communications(5th ed.) - 调制理论基础

  2. 3GPP TS 38.211 V17.0.0 - 5G NR调制规范

  3. MathWorks官方网页:comm.ASKModulator, comm.FSKModulator

http://www.jsqmd.com/news/370444/

相关文章:

  • 中国十大老字号药企,藏着千年国药的底气 - 包罗万闻
  • OpenAPI规范中请求参数写法;ai平台任务编排框架思路整理;
  • 天津市万泓泰钢管有限公司做钢管定制费用高吗,口碑好? - 工业推荐榜
  • 2026年智慧大脑公司推荐及五大优质管理驾驶舱厂商汇总 - 品牌2025
  • 单片机物联网项目实战:基于LVGL的智能火灾报警系统-基于STM32F103ESP32-S3开发板(附教程/源码)
  • 2026信用卡逾期协商全攻略 跟银行谈还款的正确方式|一站式专业推荐 - 代码非世界
  • 十大老字号药企盘点,家用常备药认准这些品牌 - 包罗万闻
  • 外卖差评多商家能点吗?哪个平台评价更真实?美团外卖省钱又省心! - Top品牌推荐
  • Python中的`set`与`frozenset`:可变与不可变集合的终极指南
  • 分析2026年热板焊接机性价比排名,选对不花冤枉钱 - myqiye
  • SelectionChanged 事件里也需要UI线程调度
  • 2026年国际本科2+2国内院校优势解读,附优质项目推荐 - mypinpai
  • 2026年哈尔滨动平衡校正口碑好的品牌排名 - 工业设备
  • 我的firefox的新建标签+按钮找不到了 - 教程
  • 2026年可靠的英语教学课程大盘点,北京宏恩性价比如何? - 工业品网
  • 单北斗GNSS在水库变形监测中的应用与维护研究
  • 2026主数据管理厂商精选指南,优质数据底座厂商推荐 - 品牌2025
  • 2026年哈尔滨底盘整备服务价格分析,哪家收费更合适 - mypinpai
  • 2026年数据资产管理系统平台选型指南,数据资源管理优质厂商推荐 - 品牌2025
  • CF2193E Product Queries 题解
  • 2026年宏邦机械行业口碑排名Top10,山东宏邦机械转台值得选吗 - 工业推荐榜
  • 口碑好的钢壳炉厂家推荐哪家?河南熔克电气实力凸显 - 工业品牌热点
  • Kafka 文件消费处理 + 文本切割
  • 2026年大润发卡回收平台哪家好?选择指南与操作建议 - 京回收小程序
  • 微算法科技(NASDAQ: MLGO)基于量子技术的区块链架构:量子原生验证模型与分布式账本革新
  • 2026年全国包装公司推荐,分析代代旺包装的产品质量能达标吗 - 工业品牌热点
  • K8s AIOps 一体化小系统(完整代码)
  • 中国十大老字号药企推荐:传承百年匠心,守护全民健康 - 包罗万闻
  • 探讨控制消防机器人遥控器价格及靠谱公司推荐 - myqiye
  • 【AI自动化】Claude Code + Playwright mcp + Python