通过MATLAB中的积分器绘制离散BPSK信号的误码率(BER)与Eb_N0的关系图

时间:2018-09-17 13:53:20

标签: matlab random filter signal-processing gaussian

我是通信系统的新手,但我需要解决此问题。在这方面,我将不胜感激。抱歉,如果您的问题很长。

我有一个BPSK信号,因此低通滤波器(LPF)的输入形式为

s(k) = A + nk (read n subscript k where k = 0,1...)

其中A是一个常数,并且nk,k = 0,1 ....是具有零差σ2的独立零均值正态随机变量。
假设LPF是以下形式的积分器

y=  1/N { ∑(k=0 to N-1)[s(k)] }  ( read ∑ from k = 0 as lower bound to N-1 as upper bound)

应用此LPF后,输出y是具有位能量色调的测试统计量 比Eb / N0。我们知道,对于BPSK,我们做出 使用此测试统计信息的错误决定是Pb = theoretical BER = 0.5 erfc{sqrt(Eb/N0)} 如果无限冲激响应(IIR)过滤器对应

y ̃ (n)= (1 - α)s(n)+ αy ̃  (n - 1),n = 0,1....N-1    where y ̃ (-1) = 0

我如何使用Matlab模拟信号s(k)并在上面的N = 8时分别产生y和y ̃(n)进行滤波操作,并绘制模拟误码率与Eb / N0以及理论BER与的关系图。 Eb / N0进行比较。 Eb / N0范围应在0到10 dB之间。

注意:对于IIR滤波器,我已经确定α=(N-1)/(N + 1)

由于我不知道如何模拟方差=σ2的WGN,所以我的代码无法获得预期的结果。我编码的是零方差。另外,我不知道如何通过上述滤波器传递信号。 有人可以帮我纠正这段代码。如果您可以在代码段方面有所帮助,那对我来说将是重要的一步。提前致谢! 这是我的方法。

clc;
clear all;
close all;
N=8; % Number of Bits to be processed
Eb_N0_dB = 0 : 1: 10;
for i = 1:length(Eb_N0_dB)
    x = rand(1,N)>0.5;  %generating 0,1s
    xpolar = 2*x -1; %BPSK modulation
    noise = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; %noise
    y = xpolar + 10^(-Eb_N0_dB(i)/20)*noise;
    xdecode = real(y)>0;  %receiver hard decison decoding
    nErr(i) = size(find([x - xdecode]),2);
end
simulatedBER = nErr/N; %simulated BER
theoryBER = 0.5erfc(sqrt(10.^(Eb_N0_dB/10))); % theoretical BER
%plot
figre
semilogy(Eb_N0_dB,simulatedBER,'bs-');
hold on
semilogy(Eb_N0_dB,theoryBER,'mx-');
axis([0 10 10^-5 0.5])
grid on

0 个答案:

没有答案