MATLAB中BPSK的星座图及误比特率(BER)曲线仿真

课设要求:
假定通信双方在单输入单输出的无线加性高斯信道上,按BPSK的调制方式进行信息传输,试在给定[-15dB.15dB]的信噪比范围,分别完成以下工作:
(1)MATLAB分别绘制信噪比为-10dB、-5dB、0dB、5dB时,1000次信道实现下的接收信号星座图,并最终将所绘制四幅图以子图的形式呈现在一幅图中.
(2)试在[-15dB.15dB]范围里每个信噪比点进行1000000次信道的实现,且接收端执行最大似然检测的条件下,绘制出通信系统的误比特率(BER)曲线图.

网上搜了一下,只有误比特率的仿真,而星座图的仿真却没有资料,所以自己写了星座图。

clear;
Maxbit = 1000;
Eb = 1;
% fs = 0.01:0.01:Maxbit; 
% f = cos(fs*2*pi+pi/2);
% fs = sin(fs*2*pi+pi/2);
for j=1:4   
    i = j*5-15;
    b = rand(1,Maxbit);         
    b_bin = round(b);                
    b2 = sign(b_bin - 0.5);
    %     b3 = repmat(b2,Maxbit,1);
    %     b4 = reshape(b3,1,[]);
    %     z = f.*b4;
    %     plot(z);


    SNR = 10 ^( 0.1 * i);           
    N0 = Eb/SNR;
    Sigma = sqrt(N0/2);

    Noise = Sigma*randn(1,Maxbit);
    Noises = Sigma*randn(1,Maxbit);
    %             
    %       Noise2 = repmat(Noise,Maxbit,1);
    %       Noise3 = reshape(Noise2,1,[]);
    %       
    %       Noises2 = repmat(Noises,Maxbit,1);
    %       Noises3 = reshape(Noises2,1,[]);

    %       zn = Noise3.*f + Noises3.*fs;


    Snt = b2 + Noise;

    subplot(2,2,j);
    scatter(Snt,Noises,'+');
    hold on;
    scatter(-1,0,'red');
    hold on;
    scatter(1,0,'red');
    axis([-5 5,-5 5])

end
Maxbit = 1000000;
for j=1:31
    i = j-16;
    b = rand(1,Maxbit);         
    b_bin = round(b);                
    b2 = sign(b_bin - 0.5);

    SNR = 10 ^( 0.1 * i);           
    N0 = Eb/SNR;
    Sigma = sqrt(N0/2);
    Noise = Sigma*randn(1,Maxbit);

    Snt = b2 + Noise;
    res(Snt<0) = -1;
    res(Snt>=0) = 1;

    St = res .* b2;
    err(j) = length(find(St<=0));
    Pb(j) = err(j)/Maxbit*100;

end
figure(2);
semilogy(-15:1:15,Pb);
grid on;
xlabel('信噪比(dB)');
ylabel('误码率Pe')

仿真结果:
星座图:
MATLAB中BPSK的星座图及误比特率(BER)曲线仿真_第1张图片
误比特率曲线:
MATLAB中BPSK的星座图及误比特率(BER)曲线仿真_第2张图片

注释掉的那部分代码是BPSK的调制过程,写完了以后发现,在绘制星座图的过程中,并不需要真正的进行调制就可以画出来,实际上,星座图中的实轴是信号的同向分量,虚轴是其正交分量,而只有噪声中含有正交分量。

你可能感兴趣的:(通信)