【MATLAB源码-第6期】基于matlab的QPSK的误码率BER和误符号率SER仿真。

操作环境:

MATLAB 2022a

1、算法描述

QPSK,有时也称作四位元PSK、四相位PSK、4-PSK,在坐标图上看是圆上四个对称的点。通过四个相位,QPSK可以编码2位元符号。图中采用格雷码来达到最小位元错误率(BER) — 是BPSK的两倍. 这意味著可以在BPSK系统带宽不变的情况下增大一倍数据传送速率或者在BPSK数据传送速率不变的情况下将所需带宽减半。

数学分析表明,QPSK既可以在保证相同信号带宽的前提下倍增BPSK系统的数据速率,也可以在保证数据速率的前提下减半BPSK系统的带宽需求。在后一种情况下,QPSK的BER与BPSK系统的BER完全相同。

由于无线电通讯的带宽都是由FCC一类部门所事先分配规定的,QPSK较之于BPSK的优势便开始显现出来:QPSK系统在给定的带宽内可以在BER相同的情况下可以提供BPSK系统两倍的带宽。采取QPSK系统在实际工程上的代价是其接收设备要远比BPSK系统的接收设备复杂。然而,随着现代电子技术的迅猛发展,这种代价已经变得微不足道。

较之BPSK系统,QPSK系统在接收端存在相位模糊的问题,所以实际应用中经常采取差分编码QPSK的方式。

QPSK遵循如下公式:

2、仿真结果演示

3、关键代码展示

4、MATLAB 源码获取

 点击下方链接获取:

【MATLAB源码-第6期】基于matlab的QPSK的误码率BER和误符号率SER仿真。_ber和ser横坐标-CSDN博客文章浏览阅读197次。由于无线电通讯的带宽都是由FCC一类部门所事先分配规定的,QPSK较之于BPSK的优势便开始显现出来:QPSK系统在给定的带宽内可以在BER相同的情况下可以提供BPSK系统两倍的带宽。图中采用格雷码来达到最小位元错误率(BER) — 是BPSK的两倍. 这意味著可以在BPSK系统带宽不变的情况下增大一倍数据传送速率或者在BPSK数据传送速率不变的情况下将所需带宽减半。数学分析表明,QPSK既可以在保证相同信号带宽的前提下倍增BPSK系统的数据速率,也可以在保证数据速率的前提下减半BPSK系统的带宽需求。_ber和ser横坐标https://blog.csdn.net/Koukesuki/article/details/132217667?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171076904216800180635261%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171076904216800180635261&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-132217667-null-null.nonecase&utm_term=%E7%AC%AC6%E6%9C%9F&spm=1018.2226.3001.4450

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个MATLAB代码示例,用于比较在相同传输条件下,QPSK和16-QAM的比特误码率BER)和符号误码率SER)的差异: ```matlab % 设置仿真参数 SNR_dB = 0:2:20; % 信噪比范围 numBits = 1e6; % 发送的比特数 M = [4 16]; % 调制方式:QPSK和16-QAM % 初始化误码率向量 BER = zeros(length(M), length(SNR_dB)); SER = zeros(length(M), length(SNR_dB)); % 仿真循环 for ii = 1:length(M) % 生成随机数据 data = randi([0 M(ii)-1], [1 numBits]); % 调制 if M(ii) == 4 modData = pskmod(data, M(ii), pi/4); else modData = qammod(data, M(ii)); end for jj = 1:length(SNR_dB) % 添加高斯噪声 noisyData = awgn(modData, SNR_dB(jj), 'measured'); % 解调 if M(ii) == 4 demodData = pskdemod(noisyData, M(ii), pi/4); else demodData = qamdemod(noisyData, M(ii)); end % 计算误码率 [~,BER(ii,jj)] = biterr(data, demodData); [~,SER(ii,jj)] = symerr(data, demodData); end end % 绘制误码率曲线 figure; semilogy(SNR_dB, BER(1,:), 'bo-', 'LineWidth', 2); hold on; semilogy(SNR_dB, BER(2,:), 'r^-', 'LineWidth', 2); grid on; xlabel('信噪比 (dB)'); ylabel('误码率'); legend('QPSK', '16-QAM'); % 绘制符号误码率曲线 figure; semilogy(SNR_dB, SER(1,:), 'bo-', 'LineWidth', 2); hold on; semilogy(SNR_dB, SER(2,:), 'r^-', 'LineWidth', 2); grid on; xlabel('信噪比 (dB)'); ylabel('符号误码率'); legend('QPSK', '16-QAM'); ``` 这段代码首先设置了仿真参数,包括信噪比范围、发送的比特数和调制方式。然后通过一个循环,分别对QPSK和16-QAM进行数据生成、调制、高斯噪声添加、解调和误码率计算。最后,绘制QPSK和16-QAM的比特误码率曲线和符号误码率曲线。 由于QPSK每个符号携带2个比特,而16-QAM每个符号携带4个比特,因此在相同的传输条件下,QPSKBERSER通常会比16-QAM更低。但是,由于16-QAM具有更高的数据传输速,因此在一定的误码率限制下,可能更适合使用16-QAM。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值