文章目录
- 前言
- 一、QPSK系统的平均误码率
- 二、QPSK系统的平均误比特率
- 1.根据误码率计算从QPSK符号(四进制)译为比特串的比特错误率。
- 2.使用最佳接收的误比特率计算公式。
- 三、MATLAB代码实现与结果
- 1.代码实现
- 2.性能曲线画图
- 总结
- 参考资料
前言
本文给出QPSK的理论误符号率与理论误比特率公式,并给出MATLAB代码实现,画出性能曲线。
一、QPSK系统的平均误码率
QPSK最佳接收的平均误符号率(用Ps表示)由下式给出:
其中,Q(x)为Q函数。
注意:公式中的Eb/N0取线性值。下文代码中需要将分贝值转换为线性值,用于画出性能曲线。
二、QPSK系统的平均误比特率
计算QPSK最佳接收的平均误比特率(用Pb表示)一般有两种方法:
1.根据误码率计算从QPSK符号(四进制)译为比特串的比特错误率。
对于多进制调制而言,若比特到符号的映射采用格雷编码,且假设符号错误只发生在相邻符号之间,这意味着一个错误符号中只包含一个比特错误。由于一个QPSK调制符号包含两个传输比特,所以对于采用格雷编码的QPSK最佳接收,有
2.使用最佳接收的误比特率计算公式。
对于QPSK最佳接收,其平均误比特率也可由下式给出:
其中,erfc(x)为互补误差函数。Q函数与互补误差函数的关系如下:
三、MATLAB代码实现与结果
1.代码实现
QPSK系统的理论误符号率和理论误比特率的MATLAB代码实现如下:
clc
close all
clear all
%% QPSK理论误符号率
EbNodBVec = 0:2:12; % Eb/No values to simulate in dB
EbNoLin = 10.^(EbNodBVec/10); % converting EbNo from dB to linear scale
q = qfunc(sqrt(2*EbNoLin));
% 误符号率
theorSER = 2 * q .* (1-q/2); % Digital Communication
%% QPSK理论误比特率
% 误比特率(由误符号率导出)
theorBER = theorSER./2; % Digital Communication
% 误比特率(由理论公式得出)
% theorBER = q; % 使用Q函数
% theorBER = 0.5 .* erfc(sqrt(EbNoLin)); % 使用互补误差函数
%% 使用库函数berawgn得到QPSK的误比特率(BER)和误符号率(SER)
M = 4; % 调制阶数Modulation order
[berQPSK, serQPSK] = berawgn(EbNodBVec,'psk',M,'nondiff');
%% 画图对比
figure();
semilogy(EbNodBVec,serQPSK,'o', EbNodBVec,berQPSK,'*', ...
EbNodBVec,theorSER,'b-', EbNodBVec,theorBER,'r-');
legend('Theoretical Symbol error rate', 'Theoretical Bit error rate', ...
'Theoretical Symbol error rate(use berawgn)', 'Theoretical Bit error rate(use berawgn)', ...
'Location','SouthWest');
xlabel('Eb/No (dB)');
ylabel('Error Probability');
title('Symbol and Bit Error Probability - QPSK');
grid on;
2.性能曲线画图
代码运行结果画图如下:
总结
MATLAB中可以使用berawgn函数得到AWGN信道的误比特率(BER)和误符号率(SER)。为了理解BER和SER的理论计算过程,本文给出了MATLAB代码实现,并通过和berawgn结果对比验证了一致性。
参考资料
1.北邮《通信原理》,周炯磐、庞沁华、续大我、吴伟陵、杨鸿文等
2.Digital Communication,Mehmet Şafak