要分析正交信号、双极性信号、单极性信号在AWGN信道下的传输性能,不妨对每个信号周期取样10次,接收端采用相关器接收,仿真误比特率随的变化情况。 其中,
正交信号
双极性信号
单极性信号
有:
%二进制正交信号在AWGN信道下的传输性能
clear all;close all;clc;
n_symbol = 100000; %传输的符号样例数目(足够多的样本使仿真趋近理论曲线)
EbN0_dB = 0:1:12; %信噪比(dB)
an = randi([0,1], 1, n_symbol); %消息数据
n_sample = 10; %信号周期取样次数
%题目所给正交基带脉冲
s0 = ones(1, n_sample);
s1 = [ones(1, n_sample/2) -ones(1, n_sample/2)];
%脉冲成型
s0t = zeros(n_symbol,1);
s1t = zeros(n_symbol,1);
s0t((an==0)) = 1;
s0t = s0t*s0;
s1t((an==1)) = 1;
s1t = s1t*s1;
st = s0t + s1t; %发送波形s(t)
%下面对发送信号进行信道以及接收仿真
Pb = zeros(size(EbN0_dB)); %误比特率
st = st'; %转置以便作相关运算
%下面进行信道与接收仿真
for i=1:length(EbN0_dB)
cn = zeros(1,n_symbol); %接收数据
%由关系式将EbN0(dB)改写为SNR数值以便调用awgn函数
snr_dB = EbN0_dB(i)-10*log10(n_sample/2);
rt = awgn(st, snr_dB); %信号经过awgn信道
r0t = s0*rt; %信号相关器
r1t = s1*rt;
cn((r1t>=r0t)) = 1; %判决器
[err, Pb(i)] = biterr(an,cn); %计算误比特率
end
EbN0 = 10.^(EbN0_dB/10); %由相对幅度表示的EbN0_dB计算Eb/N0
figure;
semilogy(EbN0_dB, Pb, 'b-o', EbN0_dB, qfunc(sqrt(EbN0)), 'r-');
xlabel('$E_b/{N_0}(dB)$', 'Interpreter','latex');
ylabel('误比特率P_b');
legend('仿真曲线', '理论曲线');
title('二进制正交信号在AWGN信道下的传输性能');
%二进制双极性信号在AWGN信道下的传输性能
clear all;close all;clc;
n_symbol = 100000; %传输的符号样例数目(足够多的样本使仿真趋近理论曲线)
EbN0_dB = 0:1:12; %信噪比(dB)
an = randi([0,1], 1, n_symbol); %消息数据
n_sample = 10; %信号周期取样次数
%题目所给正交基带脉冲
s0 = ones(1,n_sample);
s1 = -s0;
%脉冲成型
s0t = zeros(n_symbol,1);
s1t = zeros(n_symbol,1);
s0t((an==0))=1;
s0t = s0t*s0;
s1t((an==1))=1;
s1t = s1t*s1;
st = s0t + s1t; %发送波形s(t)
%下面进行信道以及接收仿真
Pb = zeros(size(EbN0_dB)); %误比特率
st = st'; %转置以便作相关运算
for i=1:length(EbN0_dB)
cn = zeros(1, n_symbol); %接收数据
snr_dB = EbN0_dB(i)-10*log10(n_sample/2); %计算SNR(dB)
rt = awgn(st, snr_dB); %信号经过awgn信道
r0t = s0*rt; %信号相关器
cn((r0t<0)) = 1; %判决器,判决门限为0
[err, Pb(i)] = biterr(an,cn); %计算误比特率
end
EbN0 = 10.^(EbN0_dB/10); %由相对幅度表示的EbN0_dB计算Eb/N0
figure;
semilogy(EbN0_dB, Pb, 'b-o', EbN0_dB, qfunc(sqrt(2*EbN0)), 'r-');
xlabel('$E_b/{N_0}(dB)$', 'Interpreter','latex');
ylabel('误比特率P_b');
legend('仿真曲线', '理论曲线');
title('二进制双极性信号在AWGN信道下的误比特率性能');
%二进制单极性信号在AWGN信道下的传输性能
clear all;close all;clc;
n_symbol = 100000; %传输的符号样例数目(足够多的样本使仿真趋近理论曲线)
EbN0_dB = 0:1:12; %信噪比(dB)
an = randi([0,1], 1, n_symbol); %消息数据
n_sample = 10; %信号周期取样次数
%题目所给正交基带脉冲
s0 = zeros(1,n_sample);
s1 = ones(1,n_sample);
%脉冲成型
s0t = zeros(n_symbol,1);
s1t = zeros(n_symbol,1);
s0t((an==0))=1;
s0t = s0t*s0;
s1t((an==1))=1;
s1t = s1t*s1;
st = s0t + s1t; %发送波形s(t)
%下面进行信道以及接收仿真
Pb = zeros(size(EbN0_dB)); %误比特率
st = st'; %转置以便作相关运算
for i=1:length(EbN0_dB)
cn = zeros(1, n_symbol); %接收数据
snr_dB = EbN0_dB(i)-10*log10(n_sample/2); %计算SNR(dB)
rt = awgn(st, snr_dB);%信号经过awgn信道
r0t = s1*rt; %信号相关器
cn((r0t>sum(s1.^2)/2)) = 1; %判决器,判决门限为Eb/2
[err, Pb(i)] = biterr(an,cn); %计算误比特率
end
EbN0 = 10.^(EbN0_dB/10); %由相对幅度表示的EbN0_dB计算Eb/N0
figure;
semilogy(EbN0_dB, Pb, 'b-o', EbN0_dB, qfunc(sqrt(EbN0/2)), 'r-');
xlabel('$E_b/{N_0}(dB)$', 'Interpreter','latex');
ylabel('误比特率P_b');
legend('仿真曲线', '理论曲线');
title('二进制单极性信号在AWGN信道下的传输性能');
从误比特率曲线可见,三个信号在AWGN信道中的传输性能仿真结果,与理论的预估值是基本相符的。在足够大的样本个数下(此处设定为n_symbol = 10000),仿真曲线与理论曲线的偏离很少。
当然,可以看到的是,二进制双极性信号的传输性能仿真曲线在之后截断,没有后续曲线。这是因为二进制双极性信号在较大的信噪比下误码率极低,以至于在测试样本中没有出现错误码字,对取对数后,错误概率呈现为负无穷,使得在区间无法绘制曲线。
对比三个信号的传输性能仿真结果,可知:在同样的信噪比下,单极性信号的误码率最高,双极性信号的误码率最低,正交信号则位于两者之间。
这样的结果也是和理论分析相符的。从信号空间分析的角度来看,根据最小欧氏距离准则,差错概率实则只取决于信号点之间的相对距离。而单极性信号的信号点之间最小距离最短,故而其差错概率最大;正交信号次之;双极性信号信号点之间的距离最远,故而其差错概率在三者中最小。