matlab代码 bpsk误码率性能曲线
时间: 2023-07-10 17:33:26 浏览: 105
以下是一个简单的 Matlab 代码,用于绘制 BPSK 误码率性能曲线:
```matlab
clear all
close all
clc
EbN0dB = -5:0.5:20; % 设置信噪比范围
EbN0 = 10.^(EbN0dB/10); % dB 转换为线性值
M = 2; % BPSK 调制
n = log2(M); % 每个符号的比特数
numBits = 100000; % 发送的比特数
numSamplesPerSymbol = 1; % 每个符号的采样数
msg = randi([0 1],numBits,1); % 随机生成发送数据
% BPSK 调制
modulatedSignal = pskmod(msg,M);
% 添加高斯白噪声
for ii = 1:length(EbN0)
% 计算噪声标准差
sigma = sqrt(1/(2*n*EbN0(ii)));
% 产生噪声
noise = sigma*randn(length(modulatedSignal),numSamplesPerSymbol);
% 添加噪声
receivedSignal = modulatedSignal + noise;
% BPSK 解调
demodulatedSignal = pskdemod(receivedSignal,M);
% 计算误码率
numErrors(ii) = biterr(msg,demodulatedSignal);
end
% 计算理论误码率
theoryBer = 0.5*erfc(sqrt(EbN0));
% 绘制误码率性能曲线
figure
semilogy(EbN0dB,numErrors/numBits,'o-')
hold on
semilogy(EbN0dB,theoryBer,'r')
legend('实际误码率','理论误码率')
xlabel('信噪比 (dB)')
ylabel('误码率')
grid on
```
这个代码生成随机的发送数据,对其进行 BPSK 调制,添加高斯白噪声,然后进行解调和误码率计算。最后,它绘制了实际误码率和理论误码率之间的性能曲线。
阅读全文