利用m文件实现QPSK仿真的误码率波形图
时间: 2023-12-30 20:02:01 浏览: 115
MATLAB实践—QPSK系统的误码率和星座图仿真.doc
5星 · 资源好评率100%
以下是一个简单的 QPSK 信号的 MATLAB 仿真代码,可以用于生成不同信噪比下的误码率曲线:
```
clear all;
M = 4; % QPSK调制方式
k = log2(M); % 每个符号的比特数
snr_dB = 0:1:10; % 信噪比范围
numBitErrs = zeros(1,length(snr_dB)); % 初始化误码率
numSymErrs = zeros(1,length(snr_dB));
for i = 1:length(snr_dB)
snr = 10^(snr_dB(i)/10); % 把信噪比从dB转换成线性值
noise_var = 1/snr; % 计算噪声方差
numBits = 1e6; % 模拟传输的比特数
tx_data = randi([0 1],1,numBits); % 生成随机的比特流
tx_syms = bi2de(reshape(tx_data,k,length(tx_data)/k).','left-msb')+1; % 把比特流分组并转换成整数
tx_mod = qammod(tx_syms,M); % 进行QPSK调制
rx_sig = tx_mod + sqrt(noise_var/2)*(randn(1,numBits/k)+1i*randn(1,numBits/k)); % 加入高斯噪声
rx_demod = qamdemod(rx_sig,M); % 进行QPSK解调
rx_data = de2bi(rx_demod-1,k,'left-msb').'; % 把整数转换成比特流
rx_data = rx_data(:).'; % 把比特流转换成一维行向量
[numBitErrs(i),numSymErrs(i)] = biterr(tx_data,rx_data); % 计算误比特率和误符号率
end
% 绘制误码率曲线
semilogy(snr_dB,numBitErrs/numBits,'-o');
xlabel('信噪比(dB)');
ylabel('误码率');
grid on;
```
在上述代码中,我们使用 `qammod` 函数进行 QPSK 调制,使用 `qamdemod` 函数进行解调。通过循环遍历不同信噪比的情况,计算误码率并最终绘制误码率曲线。
阅读全文