matlab设计双极性信号通过AWGN信道误比特率性能仿真,画出误码率曲线。
时间: 2023-10-09 19:06:52 浏览: 235
以下是Matlab代码实现双极性信号通过AWGN信道误比特率性能仿真,并画出误码率曲线的例子。
```matlab
% 双极性信号通过AWGN信道误比特率性能仿真
% 信源产生二进制双极性信号
clear all;
close all;
clc;
N = 10^6; % 仿真比特数
EbN0dB = 0:1:10; % 信噪比范围
M = 2; % 二进制调制
k = log2(M); % 每个符号包含比特数
EbN0 = 10.^(EbN0dB/10); % 信噪比(线性)
Eb = 1; % 符号能量
sigma = sqrt(Eb./(2*EbN0)); % 噪声标准差
numErrs = zeros(1,length(EbN0dB)); % 记录每个信噪比下的误码数
for ii=1:length(EbN0dB)
% 双极性信号产生
bits = randi([0,1],1,N);
s = 2*bits-1; % 将0,1映射为双极性信号+1,-1
% 信道产生
n = sigma(ii)*randn(1,N); % 添加高斯噪声
r = s + n; % 接收信号
% 解调
sr = sign(r); % 硬判决
% 统计误码数
numErrs(ii) = sum(sr~=s);
end
BER = numErrs/N; % 误比特率
BER_th = 0.5*erfc(sqrt(EbN0)); % 理论误比特率
% 画出误码率曲线
figure;
semilogy(EbN0dB,BER,'o-');
hold on;
semilogy(EbN0dB,BER_th,'r');
grid on;
legend('仿真误码率','理论误码率');
xlabel('Eb/N0(dB)');
ylabel('BER');
title('双极性信号通过AWGN信道误比特率性能仿真');
```
运行以上代码,将会得到一张误码率曲线的图像。
阅读全文