画误码率曲线matlab代码
时间: 2023-08-24 18:07:02 浏览: 33
以下是一个简单的 MATLAB 代码,可以绘制二进制相干PSK (BPSK) 调制下的误码率曲线:
```matlab
EbN0dB = -5:2:20; % 信噪比范围
EbN0 = 10.^(EbN0dB/10); % 信噪比线性值
M = 2; % 调制阶数
k = log2(M); % 每个符号的位数
N = 10^6; % 发送的比特数
% 生成随机二进制数据
dataIn = randi([0 1], N, k);
% BPSK 调制
dataMod = pskmod(dataIn, M);
% 添加高斯白噪声
for i = 1:length(EbN0)
% 计算每个符号的能量
Es = sum(abs(dataMod).^2)/N;
% 计算每个符号的噪声方差
sigma = sqrt(Es/(2*EbN0(i)));
% 添加高斯白噪声
noise = sigma*randn(N, 1);
dataRx = dataMod + noise;
% BPSK 解调
dataDemod = pskdemod(dataRx, M);
% 统计误码率
numErr(i) = sum(sum(dataIn ~= dataDemod));
end
% 计算误码率
BER = numErr/(N*k);
% 绘制误码率曲线
semilogy(EbN0dB, BER, 'b-*');
grid on;
xlabel('Eb/N0 (dB)');
ylabel('BER');
title('BPSK误码率曲线');
```
该代码将绘制 BPSK 误码率曲线,其中 `EbN0dB` 是信噪比范围,`EbN0` 是线性信噪比值,`M` 是调制阶数,`k` 是每个符号的位数,`N` 是发送的比特数。使用 `randi` 函数生成随机的二进制数据,使用 `pskmod` 函数进行 BPSK 调制,然后添加高斯白噪声并使用 `pskdemod` 函数进行解调。最后,计算误码率并绘制误码率曲线。
阅读全文