画误码率曲线matlab代码
时间: 2023-08-25 11:07:48 浏览: 46
以下是一个简单的画误码率曲线的 MATLAB 代码:
```matlab
% 设置参数
snr_db = 0:5:30; % 信噪比范围
num_bits = 10000; % 发送位数
num_runs = 50; % 实验次数
% 初始化变量
ber = zeros(size(snr_db)); % 误码率
% 循环计算信噪比下的误码率
for i = 1:length(snr_db)
snr = 10^(snr_db(i)/10); % 把信噪比转换为线性比例
errors = 0; % 记录错误比特数
% 进行多次实验
for j = 1:num_runs
% 生成随机比特序列
bits = randi([0 1], 1, num_bits);
% 进行调制和添加高斯噪声
signal = 2*bits - 1; % BPSK 调制
noise = sqrt(1/snr)*randn(1,num_bits); % 添加高斯噪声
received = signal + noise; % 接收信号
% 进行解调和比特判决
decoded = received > 0; % 硬判决
errors = errors + sum(decoded ~= bits); % 统计错误比特数
end
% 计算误码率
ber(i) = errors/(num_bits*num_runs);
end
% 画图
semilogy(snr_db, ber, 'o-');
xlabel('SNR (dB)');
ylabel('BER');
title('误码率曲线');
grid on;
```
该代码生成一个 误码率曲线图,可以用于比较不同信噪比下的性能。