通信原理仿真报告-数字传输系统的最佳接收与误码分析
通信原理仿真报告-数字传输系统的最佳接收与误码分析
一、概述
1.1 研究背景
在数字通信系统中,需要将输入的数字序列映射为信号波形在信道中传输,此时信源输出数字序列,经过信号映射后成为适于信道传输的数字调制信号。数字符号是按码元间隔不断产生的,将数字符号一一映射为相应的信号波形后,就形成了数字调制信号。根据映射后信号的频谱特性,可以分为基带信号(低通型频谱)和频带信号(带通型频谱)。数字系统通用模型如下图所示。
图1.1 数字系统通用模型
若通信信道的传递函数为低通的,则称此信道为基带信道,适合传送脉冲波形。将数字基带信号通过基带信道传输的系统称为数字基带传输系统。数字基带传输系统模型如图1.2所示,主要分为发射机、信道、接收机三个部分。
图1.2 数字基带传输系统模型
在数字基带传输系统中,确定信号在受到加性高斯白噪声干扰下的最佳接收应采用匹配滤波器,使其在最佳采样时刻t0的信噪比最大,然后再选取合适的判决门限进行判决,最终使误比特率最小。
在实际数字通信系统中的信道往往是有限的,为此本文更进一探讨了带限信道传输信号的设计。对于数字带限信号,由于限带线性滤波器冲激响应的波形不限时,其有效持续时间将拓展至若干码元间隔,因此在接收端采样时刻的采样值可能存在码间干扰,导致误码率增大。为了减少码间干扰,需满足奈奎斯特准则。
本文采用基于无码间干扰基带传输的升余弦滤波器。
1.2 研究问题
本次仿真报告针对下列四种系统:
(1)信道带宽无限时的单极性基带传输
(2)信道带宽受限时的双极性基带传输
(3)信道带宽受限时的QPSK传输
(4)信道带宽受限时的16QAM传输
采用匹配滤波器(相关接收机),对误码性能进行仿真 :
(1)给出了系统模型,以及对系统模型的分析,推导误码率理论结果;
(2)选择适当仿真工具,搭建仿真模型,设置仿真参数进行仿真并得到误码率仿真结果;
(3)将仿真结果与误码率结果进行比较,对误差进行分析得出结论。
二、系统模型
2.1 信道带宽无限时的单极性基带传输模型
利用理想的无限带宽信道进行传输时,可以采用矩形波为输入信号,采用单极性不归零码进行传输
单极性不归零码发送序列的幅值 s i s_i si为 i = 1 , s 1 = A i = 2 , s 2 = 0 i=1,s_1=A\\ i=2,s_2=0 i=1,s1=Ai=2,s2=0
单极性不归零码时域和频域波形如图2.1。
图2.1 单极性不归零码时域和频域波形
发送滤波器的冲激响应如图2.2。
图2.2 发送/接收滤波器的冲激响应
使用匹配滤波器进行接收,实现系统最佳接收,单极性基带传输系统完整框图如图2.3。
图2.3 单极性基带传输系统完整框图
2.2 信道带宽受限时的双极性基带传输模型
利用有限带宽信道进行传输时,采用升余弦滤波器进行传输,并采用双极性序列作为信息传输序列,以免在频域造成干扰。
双极性不归零码发送序列的幅值 s i s_i si为 i = 1 , s 1 = + A i = 2 , s 2 = − A i=1,s_1=+A\\ i=2,s_2=-A i=1,s1=+Ai=2,s2=−A
双极性不归零码时域和频域波形如下图所示:
图2.4 双极性不归零码时域和频域波形
升余弦函数时域和频域波形如下图所示:
图2.5 升余弦函数时域和频域波形
使用升余弦滤波器作为匹配滤波器进行接收滤波器,实现系统最佳接收,理想带限传输系统完整框图如图2.6。
图2.6 理想带限传输系统完整框图
2.3 信道带宽受限时的QPSK传输模型
利用有限带宽信道进行传输时,采用升余弦滤波器。QPSK称作四进制移相键控,该信号的正弦波有4个可能的离散相位状态,每个载波相位携带两个二进制符号,此处将这四个相位设计为间隔π/2的均匀相位,示意图如下:
图2.7 QPSK信号示意图
实际中,一般用两个I/Q正交的BPSK产生QPSK,即将QPSK信号看为同相及正交支路2PSK的叠加。过程如下图所示:
图2.8 QPSK由两个正交的BPSK构成
通过正交调制系统如下:
图2.9 QPSK发送端示意图
得到调制后的QPSK信号,功率谱密度如图所示:
图2.10 QPSK信号功率谱密度图
解调时,可以对两路信号分别进行2PSK解调,然后进行串并变换得到输出数据。系统接收仍采用匹配滤波器。接收模型如图所示:
图2.11 QPSK接收端示意图
2.4 信道带宽受限时的16QAM传输模型
利用有限带宽信道进行传输时,采用升余弦滤波器进行传输。16QAM信号是由两个正交载波的多电平振幅键控信号叠加而成的,可以表示为:
s Q A M ( t ) = a i c g T ( t ) c o s 2 π f c t − a i s g T ( t ) s i n 2 π f c t i = 1 , 2 , 3...16 0 ≤ t ≤ T s s_{QAM}(t)=a_{i_c}g_T(t)cos2\pi f_ct-a_{i_s}g_T(t)sin2\pi f_ct \qquad i=1,2,3...16 \qquad 0≤t≤T_s sQAM(t)=aicgT(t)cos2πfct−aisgT(t)sin2πfcti=1,2,3...160≤t≤Ts
其中, a i c a_{i_c} aic和 a i s a_{i_s} ais是一组离散电平的集合, g T ( t ) g_T(t) gT(t)是基带成型滤波器的冲激响应。
16QAM信号示意图如下:
图2.12 16QAM信号示意图
16QAM信号发送端和接收端框图如下:
图2.13 16QAM发送端示意图
图2.14 16QAM接收端示意图
2.5 补充:对通信系统中正交调制的理解
正交调制(IQ调制):
从I路和Q路分别输入两个数据a、b,I路信号和cos相乘,Q路信号和sin相乘,之后再叠加,这一过程就是正交调制。
正交调制的信号常用负数a+jb表示,因此也常称为复信号,正交调制可以用复数乘法来实现(此处回顾解析信号、包络等概念,对同相、正交的理解)。
正交解调:
接收端收到s(t)后,分为两路:一路乘以cos再积分得到a,一路乘以-sin再积分得到b。
正交调制解调可以实现MPSK(BPSK、QPSK、8PSK等),MQAM(16QAM,64QAM等)。
MPSK:Multiple Phase Shift Key 相移键控
BPSK:2个相位表示0和1
QPSK:4个相位表示00、01、10、11
8PSK:8个相位表示000、001、010、011、100、101、110、111
QPSK:在正交调制端输入(+1,-1)(-1,+1)(-1,-1)(+1,-1)就可以得到QPSK的四个相位( 1 4 π \frac{1}{4}\pi 41π, 3 4 π \frac{3}{4}\pi 43π, 5 4 π \frac{5}{4}\pi 45π, 7 4 π \frac{7}{4}\pi 47π)。即将输入数据每两个bit划为一组,根据映射关系得到对应的相位。采取顺序为00、01、11、10的格雷码最大可能减少比特错误概率(相邻两个码之间只有1位数字不同)。
8PSK:每三个bit为一组划分即可实现8PSK。
MQAM:Multiple Quadrature Amplitude Modulation 多进制正交幅度调制。4相相位键控信号其实也是一种二电平正交振幅键控。
16QAM:每四个bit划分为一组,格雷码对应到16个点的矩阵星座图上。
三、误码性能分析
3.1 信道带宽无限时的单极性基带传输
发送信号
s i ( t ) = { A , i = 1 0 , i = 2 s_i(t)=\left\{ \begin{aligned} &A, \quad i=1\\ & 0 ,\quad i=2\\ \end{aligned} \right. si(t)={A,i=10,i=2
接收 r i ( t ) = s i ( t ) + n w ( t ) r_i(t)=s_i(t)+n_w(t) ri(t)=si(t)+nw(t)
假设发射的是 s 1 ( t ) s_1(t) s1(t),则匹配滤波器与 s 1 ( t ) s_1(t) s1(t)匹配,冲激响应为 h ( t ) = s 1 ( T − t ) h(t)=s_1(T-t) h(t)=s1(T−t)。
则接收到 y 1 ( t ) y_1(t) y1(t)均值为 E s 1 E_{s1} Es1,方差为 N 0 E s 1 / 2 N_0E_{s1}/2 N0Es1/2; y 2 ( t ) y_2(t) y2(t)均值为 0 0 0,方差为 N 0 E s 1 / 2 N_0E_{s1}/2 N0Es1/2。其中 E s 1 E_{s1} Es1表示信号 s 1 ( t ) s_1(t) s1(t)的能量, E s 1 = A 2 T s E_{s1}=A^2T_s Es1=A2Ts; N 0 N_0 N0表示高斯白噪声的单边功率谱密度。
平均符号能量 E b = 1 / 2 ∗ E s 1 + 1 / 2 ∗ 0 = E s 1 / 2 E_b=1/2*E_{s1}+1/2*0=E_{s1}/2 Eb=1/2∗Es1+1/2∗0=Es1/2。
图3.1 单极性基带传输概率密度示意图
如图取最佳判决门限 V T = 1 / 2 E s 1 V_T=1/2E_{s1} VT=1/2Es1,则错误概率 P e 1 = Q ( E b N 0 ) P_{e1}=Q(\sqrt\frac{E_b}{N_0}) Pe1=Q(N0Eb ), P e 2 = Q ( E b N 0 ) P_{e2}=Q(\sqrt\frac{E_b}{N_0}) Pe2=Q(N0Eb )
误码率 P e = 1 / 2 ∗ P e 1 + 1 / 2 ∗ P e 2 = Q ( E b N 0 ) P_e=1/2*P_{e1}+1/2*P_{e2}=Q(\sqrt\frac{E_b}{N_0}) Pe=1/2∗Pe1+1/2∗Pe2=Q(N0Eb )。
3.2 信道带宽受限时的双极性基带传输
采用根升余弦滚降传递函数。
发送信号
s i ( t ) = { + A , i = 1 − A , i = 2 s_i(t)=\left\{ \begin{aligned} & +A , \quad i=1\\ & -A ,\quad i=2\\ \end{aligned} \right. si(t)={+A,i=1−A,i=2
接收 r i ( t ) = s i ( t ) + n w ( t ) r_i(t)=s_i(t)+n_w(t) ri(t)=si(t)+nw(t)
假设发射的是 s 1 ( t ) s_1(t) s1(t),则匹配滤波器与 s 1 ( t ) s_1(t) s1(t)匹配,冲激响应为 h ( t ) = s 1 ( T − t ) h(t)=s_1(T-t) h(t)=s1(T−t)。
则接收到 y 1 ( t ) y_1(t) y1(t)均值为 E s 1 E_{s1} Es1,方差为 N 0 E s 1 / 2 N_0E_{s1}/2 N0Es1/2; y 2 ( t ) y_2(t) y2(t)均值为 E s 2 = − E s 1 E_{s2}=-E_{s1} Es2=−Es1,方差为 N 0 E s 1 / 2 N_0E_{s1}/2 N0Es1/2。其中 E s 1 E_{s1} Es1表示信号 s 1 ( t ) s_1(t) s1(t)的能量, E s 1 = A 2 T s E_{s1}=A^2T_s Es1=A2Ts; N 0 N_0 N0表示高斯白噪声的单边功率谱密度。
平均符号能量 E b = 1 / 2 ∗ E s 1 + 1 / 2 ∗ E s 1 = E s 1 E_b=1/2*E_{s1}+1/2*E_{s1}=E_{s1} Eb=1/2∗Es1+1/2∗Es1=Es1。
图3.2 双极性基带传输概率密度示意图
如图取最佳判决门限 V T = 0 V_T=0 VT=0,则错误概率 P e 1 = Q ( 2 E b N 0 ) P_{e1}=Q(\sqrt\frac{2E_b}{N_0}) Pe1=Q(N02Eb ), P e 2 = Q ( 2 E b N 0 ) P_{e2}=Q(\sqrt\frac{2E_b}{N_0}) Pe2=Q(N02Eb )
误码率 P e = 1 / 2 ∗ P e 1 + 1 / 2 ∗ P e 2 = Q ( 2 E b N 0 ) P_e=1/2*P_{e1}+1/2*P_{e2}=Q(\sqrt\frac{2E_b}{N_0}) Pe=1/2∗Pe1+1/2∗Pe2=Q(N02Eb )。
3.3 信道带宽受限时的QPSK传输
QPSK信号可以看作两路BPSK信号的叠加(串并变换),因此其误码率等于BPSK信号传输的误码率。
BPSK误码率分析如图所示:
图3.3 BPSK误码率分析
QPSK误码率 P e = Q ( 2 E b N 0 ) P_e=Q(\sqrt\frac{2E_b}{N_0}) Pe=Q(N02Eb )。
3.4 信道带宽受限时的16QAM传输
图3.4 16QAM误码率分析
16QAM的最佳接收误码率取决于数字基带MPAM的误码率,MPAM的正确判决符号的概率为 P c = ( 1 − P M ) 2 P_c=(1-P_{\sqrt{M}} )^2 Pc=(1−PM )2,式中 P M P_{\sqrt{M}} PM 表示同相或正交支路 M \sqrt{M} M 进制ASK信号的误符号率, P M = 2 ( 1 − 1 M ) Q ( d m i n 2 2 N 0 ) P_{\sqrt{M}}=2(1-\frac{1}{\sqrt{M}})Q(\sqrt{\frac{{d_{min}}^2}{2N_0}}) PM =2(1−M 1)Q(2N0dmin2 )。
图3.5 16QAM信号星座图对应的L矩阵
使用平均信号 E a v E_{av} Eav, P e = 4 ( 1 − 1 M ) Q ( 3 E a v ( M − 1 ) N 0 ) P_e=4(1-\frac{1}{\sqrt{M}})Q(\sqrt{\frac{3E_{av}}{(M-1)N_0}}) Pe=4(1−M 1)Q((M−1)N03Eav )
四、仿真模型与仿真过程
4.1 信道带宽无限时的单极性基带传输MATLAB仿真
4.1.1 MATLAB源代码
%带宽无限单极性不归零码传输
T_start=0;%开始时间
T_stop=0.5;%截止时间
T=T_stop-T_start;%仿真持续时间
T_sample=1/1000;%采样间隔
f_sample=1/T_sample; % 采样速率
N_sample=T/T_sample;% 采样点数
n=0:N_sample-1;
r_s=100;%传输速率
alpha=0;%df=alpha*rs=25Hz
NumBits=T*r_s;%传输bit数
NumCoff=40;%滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;%Transmitter
g_T=[ones(1,f_sample/r_s),zeros(1,31)];%发送滤波器,矩形脉冲
b1=(sign(rand(1,NumBits)-0.5)+1)*0.5;%original bits
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b1;
b3=reshape(b2,1,f_sample/r_s*NumBits);%原始数字序列
s=conv(b3,g_T);%transmitted signal%AWGN channel
N_0=10^(-9);
noise_w=wgn(1,length(s),N_0*f_sample,'linear');%产生白噪声
r=s+noise_w;%叠加白噪声%receiver
g_R=[ones(1,f_sample/r_s),zeros(1,30)];%矩形ransmission filter
y1=conv(r,g_R)/5;%接收的波形
sample1=zeros(f_sample/r_s,NumBits);
sample1(1,:)=ones(1,NumBits);
sample2=reshape(sample1,1,f_sample/r_s*NumBits);
sample3=zeros(1,length(y1));
sample3(NumCoff+1:NumCoff+f_sample/r_s*NumBits)=sample2;
y2=y1.*sample3;
y2(:,all(y2==0,1))=[];%恢复的数字序列
y2(y2<1)=[0];
y3=[0,0,0,y2];
y3=y3(1:length(y3)-3);
C=zeros(9,length(y3));
B=[C;y3];
B=B(:)';
b_t=sign(b1);
b_r=sign(y3);
BER=length(find(b_t~= b_r))/NumBits;%仿真误码率
fprintf('BER=%f \n',BER); figure(1);
subplot(2,2,1);plot(s);
title('传输的波形');
subplot(2,2,2);plot(r);
title('叠加噪声后的传输的波形');
subplot(2,2,3);plot(y1);
title('接收的波形');
subplot(2,2,4);plot(s);hold on;plot(y1);legend('传输的波形','接受的波形');figure(2);
subplot(3,1,1);stem(b3,'.');
title('原始数字序列');
subplot(3,1,2);stem(y3,'.');
title('恢复的数字序列');
subplot(3,1,3);stem(b3,'.');hold on;stem(B,'.');legend('原始数字序列','恢复的数字序列');sn=0.1:0.01:100; % 定义信噪比序列
snlg=20*log10(sn); % 将信噪比转化为dB表示
ssingle=sqrt(sn/2);
bsingle=erfc(ssingle)/sqrt(2); % 求单极性的误比特率序列
figure(3);
semilogy(snlg,bsingle);
axis([-20 30 0.0000001 1]);
title('单极性不归零码NRZ');
xlabel('输入信噪比');
ylabel('误比特率')
4.1.2 MATLAB仿真结果
图4.1 单极性不归零码-调制解调波形
图4.2 单极性不归零码-数字序列
图4.3 单极性不归零码-仿真误码率
图4.4 单极性不归零码-理论误码率
4.2 信道带宽受限时的双极性基带传输MATLAB仿真
4.2.1 MATLAB源代码
%带宽受限,双极性不归零码传输
T_start=0;%开始时间
T_stop=0.5;%截止时间
T=T_stop-T_start;%仿真持续时间
T_sample=1/1000;%采样间隔
f_sample=1/T_sample; % 采样速率
N_sample=T/T_sample;% 采样点数
n=0:N_sample-1;
r_s=100;%传输速率
alpha=0.25;%df=alpha*rs=25Hz
NumBits=T*r_s;%传输bit数
NumCoff=30;%滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;%Transmitter
g_T=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%升余弦滤波器transmission filter
b1=sign(rand(1,NumBits)-0.5);%original bits
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b1;
b3=reshape(b2,1,f_sample/r_s*NumBits);%原始数字序列
s=conv(b3,g_T);%transmitted signal%AWGN channel
N_0=10^(-9);
noise_w=wgn(1,length(s),N_0*f_sample,'linear');%产生白噪声
r=s+noise_w;%叠加白噪声%receiver
g_R=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%升余弦滤波器transmission filter
y1=conv(r,g_R);%接收的波形
sample1=zeros(f_sample/r_s,NumBits);
sample1(1,:)=ones(1,NumBits);
sample2=reshape(sample1,1,f_sample/r_s*NumBits);
sample3=zeros(1,length(y1));
sample3(NumCoff+1:NumCoff+f_sample/r_s*NumBits)=sample2;
y2=y1.*sample3;
y2(:,all(y2==0,1))=[];%恢复的数字序列
C = zeros(9,length(y2));
B = [C;y2];
B = B(:)';
b_t=(sign(b1)+1)*0.5;
b_r=(sign(y2)+1)*0.5;
BER=length(find(b_t~= b_r))/NumBits;%仿真误码率
fprintf('BER=%f \n',BER);figure(1);
subplot(2,2,1);plot(s);
title('传输的波形');
subplot(2,2,2);plot(r);
title('叠加噪声后的传输的波形');
subplot(2,2,3);plot(y1);
title('接收的波形');
subplot(2,2,4);plot(s);hold on;plot(y1);legend('传输的波形','接受的波形');figure(2);
subplot(3,1,1);stem(b3,'.');
title('原始数字序列');
subplot(3,1,2);stem(y2,'.');
title('恢复的数字序列');
subplot(3,1,3);stem(b3,'.');hold on;stem(5*B,'.');legend('原始数字序列','恢复的数字序列');sn=0.1:0.01:100; % 定义信噪比序列
snlg=20*log10(sn); % 将信噪比转化为dB表示
sdouble=sqrt(sn);
bdouble=erfc(sdouble)/sqrt(2); % 求双极性的误比特率序列
figure(3);
semilogy(snlg,bdouble);
axis([-20 30 0.0000001 1]);
title('双极性不归零码NRZ');
xlabel('输入信噪比');
ylabel('误比特率')
4.2.1 MATLAB仿真结果
图4.5 双极性不归零码-调制解调波形
图4.6 双极性不归零码-数字序列
图4.7 双极性不归零码-仿真误码率
图4.8 双极性不归零码-理论误码率
4.3 信道带宽受限时的QPSK传输MATLAB仿真
4.3.1 MATLAB源代码
% 带宽受限,QPSK传输
T_start=0;%开始时间
T_stop=1;%截止时间
T=T_stop-T_start;%仿真持续时间
T_sample=1/1000;%采样间隔
f_sample=1/T_sample; % 采样速率
N_sample=T/T_sample;% 采样点数
n=0:N_sample-1;
r_s=100;%传输速率
alpha=0.25;%df=alpha*rs=25Hz
NumBits=T*r_s;%传输bit数
NumCoff=40;%滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
fc1=100;
fc2=200;%Transmitter
g_T=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%transmission filter
b0=sign(rand(1,2*NumBits)-0.5);%original bits
bQ1=b0(1:2:2*NumBits-1);
bI1=b0(2:2:2*NumBits);bQ2=zeros(f_sample/r_s,NumBits);
bQ2(1,:)=bQ1;
bQ3=reshape(bQ2,1,f_sample/r_s*NumBits);%原始数字序列Q
sQ1=conv(bQ3,g_T,'same');%transmitted signalQbI2=zeros(f_sample/r_s,NumBits);
bI2(1,:)=bI1;
bI3=reshape(bI2,1,f_sample/r_s*NumBits);%原始数字序列I
sI1=conv(bI3,g_T,'same');%transmitted signalIn=1:N_sample;
Q1=sqrt(1/2)*cos(2*pi*fc1*n*T_sample);
I1=sqrt(1/2)*sin(2*pi*fc1*n*T_sample);
Q2=sqrt(1/2)*cos(2*pi*fc2*n*T_sample);
I2=sqrt(1/2)*sin(2*pi*fc2*n*T_sample);
sQ2=sQ1.*Q1;
sI2=sI1.*I1;
sQ3=sQ1.*Q2;
sI3=sI1.*I2;
s1=sQ2-sI2;
s2=sQ3-sI3;%AWGN channel
N_0=10^(-9);
noise1_w=wgn(1,length(s1),N_0*f_sample,'linear');%产生白噪声
noise2_w=wgn(1,length(s2),N_0*f_sample,'linear');%产生白噪声
r1=s1+noise1_w;%叠加白噪声
r2=s2+noise2_w;%receiver
g_R=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%transmission filter
sample1=zeros(f_sample/r_s,NumBits);
sample1(1,:)=ones(1,NumBits);
sample2=reshape(sample1,1,f_sample/r_s*NumBits);y1Q1=r1.*Q1;
y1I1=-r1.*I1;
[B,A] = butter(4,0.1,'low');
y1Q1=filter(B,A,y1Q1);%qpsk需进行判决的一路信号
y1I1=filter(B,A,y1I1);%qpsk需进行判决的另一路信号
y1Q2=conv(y1Q1,g_R);%匹配滤波
y1I2=conv(y1I1,g_R);%匹配滤波y2Q1=r2.*Q2;
y2I1=-r2.*I2;
[B,A] = butter(4,0.1,'low');
y2Q1=filter(B,A,y2Q1);%qpsk需进行判决的一路信号
y2I1=filter(B,A,y2I1);%qpsk需进行判决的另一路信号
y2Q2=conv(y2Q1,g_R);%匹配滤波
y2I2=conv(y2I1,g_R);%匹配滤波sampleQ3=zeros(1,length(y1Q2));
sampleQ3(NumCoff+1:NumCoff+f_sample/r_s*NumBits)=sample2;
y1Q3=y1Q2.*sampleQ3;
y1Q3(:,all(y1Q3==0,1))=[];%恢复的数字序列
C1 = zeros(9,length(y1Q3));
B1 = [C1;y1Q3];
B1 = B1(:)';sampleI3=zeros(1,length(y2I2));
sampleI3(NumCoff+1:NumCoff+f_sample/r_s*NumBits)=sample2;
y2I3=y2I2.*sampleI3;
y2I3(:,all(y2I3==0,1))=[];%恢复的数字序列
C2 = zeros(9,length(y2I3));
B2 = [C2;y2I3];
B2 = B2(:)';y2(1:2:2*NumBits-1)=sign(y1Q3);
y2(2:2:2*NumBits)=sign(y2I3);
y3=[0,0,y2];
y3=y3(1:length(y3)-2);b_t=sign(b0);
b_r=sign(y3);
BER=length(find(b_t~= b_r))/NumBits;%仿真误码率
fprintf('BER=%f \n',BER);%myeyediagram1=eyediagram(y1Q2(1:length(y1Q2)),f_sample/r_s);%眼图
%myeyediagram2=eyediagram(y2I2(1:length(y2I2)),f_sample/r_s);%眼图figure(1);
subplot(4,1,1);plot(s1);
title('传输的波形1');
subplot(4,1,2);plot(r1);
title('叠加噪声后的传输的波形1');
subplot(4,1,3);plot(s2);
title('传输的波形2');
subplot(4,1,4);plot(r2);
title('叠加噪声后的传输的波形2');figure(2);
subplot(3,1,1);stem(bQ3,'.');hold on;stem(20*B1,'.');
title('数字序列奇');
subplot(3,1,2);stem(bI3,'.');hold on;stem(20*B2,'.');
title('数字序列偶');
subplot(3,1,3);stem(b0,'.');hold on;stem(y3/2,'.');legend('原始数字序列','恢复的数字序列');%误码率曲线的绘制
SNR=0:1:20; %信噪比变化范围
SNR1=0.5*(10.^(SNR/10)); %将信噪比转化成直角坐标
N=1000000; %仿真点数
X=4; %进制数
x=randi([0,1],1,N); %产生随机信号
h=pskmod(x,X); %调用matlab自带的psk调制函数
hR=h;
for i=1:length(SNR);yAn=awgn(h,SNR(i),'measured'); yA=pskdemod(yAn,X); %QPSK属于4PSK[bit_A,l]=biterr(x,yA); QPSK_s_AWGN(i)=bit_A/N;yRn=awgn(hR,SNR(i),'measured');yR=pskdemod(yRn,X); %调用matlab自带的psk解调函数[bit_R,ll]=biterr(x,yR);QPSK_s_Ray(i)=bit_R/N;
end
QPSK_t_AWGN=1/2*erfc(sqrt(10.^(SNR/10)/2)); %AWGN信道下QPSK理论误码率
QPSK_t_Ray= -(1/4)*(1-sqrt(SNR1./(SNR1+1))).^2+(1-sqrt(SNR1./(SNR1+1)));%绘制图形
figure(3)
semilogy(SNR,QPSK_s_AWGN,':b*');hold on;
semilogy(SNR,QPSK_t_AWGN,':go');hold on;
axis([-1 20 10^-4 1]);
legend('AWGN仿真','AWGN理论');
title('QPSK误码性能分析');
xlabel('信噪比(dB)');ylabel('BER');
4.3.2 MATLAB仿真结果
图4.9 QPSK波形
图4.10 QPSK数字序列
图4.11 QPSK仿真和理论误码率曲线
图4.12 QPSK仿真误码率
4.4 信道带宽受限时的16QAM传输MATLAB仿真
4.4.1 MATLAB源代码
clc
close all
clear all
nsymbol= 100000;%一共有十万个符号
M=16;%阶数,表示16QAM
graycode=[0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10];%格雷映射,十进制表示
EsN0=5:20;%符号比,单位db
snr1=10.^(EsN0/10);%将db转为非线性的方式
msg=randi([0,15],1,nsymbol);%随机产生0-15的符号,乘nsymbol得到原始数据
msg1=graycode(msg+1);%格雷映射
msgmod=qammod(msg1,M);%调用qammod函数,得到调制后的符号
scatterplot(msgmod);%画出星座点图
spow=norm(msgmod).^2/nsymbol;%a+bj取模的平方,即功率;功率除以整个符号得到平均功率
for i= 1:length(EsN0)sigma=sqrt(spow/(2*snr1(i))); rx=msgmod+sigma*(randn(1,length(msgmod))+1i*randn(1,length(msgmod))); %星座点图乘以随机长度高斯白噪声y=qamdemod(rx,M);%转为对应的点decmsg=graycode(y+1);%格雷逆映射[err1 ,ber(i)]=biterr(msg,decmsg,log2(M));[err2,ser(i)]=symerr(msg,decmsg);%比较符号误差
end
p4=2*(1-1/sqrt(M))*qfunc(sqrt(3*snr1/(M-1)));%误码率
ser1=1-(1-p4).^2;
ber1=1/log2(M)*ser1;%误比特率
figure()
semilogy(EsN0,ber,'o' ,EsN0,ser,'*',EsN0,ser1,'-',EsN0,ber1,'-.');
title('16QAM仿真')
xlabel('Es/N0');ylabel('SER AND BER');
legend('仿真误比特率','仿真误码率','理论误码率' ,'理论误比特率');
4.4.2 MATLAB仿真结果
图4.13 16QAM星座散点图
图4.13 16QAM理论误差和仿真误差的对比图
五、仿真结果分析
1、数字信号基带传输系统模型构建与信道的带宽密切相关,信道带宽有限时会产生码间干扰。
2、当信道带宽无限时,使用不归零矩形脉冲进行信号传输,由于受到加性高斯白噪声的干扰,为实现最佳接收,接收端滤波器采用匹配滤波器,并且匹配滤波器与发送的 s 1 ( t ) s_1(t) s1(t)匹配(单极性),通过相关解调器等效匹配滤波器,得到采样值送入判决器。
3、当信道带宽受限时,需要考虑码间干扰,根据奈奎斯特第一准则,一般采用升余弦谱消除码间干扰,即在采用匹配滤波器作为最佳接收的情况下,匹配滤波器的波形与成型滤波器都是根升余弦谱。
4、比较单极性码与双极性码的误码率:在输入信噪比相同的情况下,双极性不归零码的最佳接收平均误比特率比单极性的小。
5、在其他条件相同的情况下,可以通过延长仿真时间,提高采样速率的方法来减少误差。
六、总结
通过这次实验,我对单双极性码、信道有限or无限、匹配滤波器、升余弦滤波器等概念有了更深刻的认识,在MATLAB仿真能力上也有了提高。最重要的是我建立了理论到实践的逻辑关系,对通信原理这门课有了更多实际上的体会,也有更多学好它的信心。
补充:作为通信专业重中之重的基础课,学完之后我初步对我们在学什么和我们将要学什么有了大概的了解,感觉懂了一点,也感觉该学的还有很多。
通信原理仿真报告-数字传输系统的最佳接收与误码分析相关推荐
- 数字传输系统的最佳接收与误码分析-python实现
文章目录 0. 作业要求 1. 概述 1.1 背景知识 1.1.1 数字传输系统 1.1.2 数字基带传输系统 发射机(脉冲调制) 线路编码 窄脉冲生成器 发送滤波器 信道(AWGN信道) 接收机(检 ...
- 通信原理-第9章-数字信号的最佳接收
学习步骤 首先看该章节后的习题与小结,圈出术语 带着名术语去书本找解释 带着术语去理解书中的图标.案例及例题 应用 观看该章节后的习题与小结,圈出术语 最佳接收:接收滤波器接收最高质量的信号,我们将错 ...
- matlab 2ask,(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实验报告)
<(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实验报告)>由会员分享,可在线阅读,更多相关<(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实 ...
- 通信使用matlab三元码实验报告,Matlab仿真DSBSC信号与双极性不归零码通信原理实验报告二实验...
Matlab仿真DSBSC信号与双极性不归零码通信原理实验报告二实验 Matlab 仿真 DSB-SC 信号与双极性不归零码通信原理实验报告二实验题目:Matlab 仿真 DSB-SC 信号与双极性不 ...
- 基于Matlab的模拟通信实验平台设计,【通信原理仿真实验】通信原理虚拟实验仿真平台的设计和实现_玛雅作文网...
作文「通信原理虚拟实验仿真平台的设计和实现」共有 4564 个字,其中有 2704 个汉字,1316 个英文,162 个数字,382 个标点符号.作者佚名,请您欣赏.玛雅作文网荟萃众多优秀学生作文,如 ...
- 通信原理简明教程 | 数字调制传输
文章目录 1 二进制数字调制和解调 1.1 二进制数字调制的基本原理 1.2 二进制数字调制信号的特性 1.3 解调方法 2 二进制差分相移键控 2.1 2PSK的倒π现象 2.2 2DPSK调制和解 ...
- 通信原理简明教程 | 数字基带传输
文章目录 1数字基带传输系统的基本组成 2 数字基带信号及其频域特性 2.1 基本码型 2.2 常用码型 2.3 数字基带信号的功率谱 3 码间干扰 3.1 码间干扰的概念(ISI) 3.2 无码间干 ...
- python通信原理实验报告_【Python之旅】第五篇(一):Python Socket通信原理-阿里云开发者社区...
只要和网络服务涉及的,就离不开Socket以及Socket编程,下面就说说Python Socket通信的基本原理. 1.Socket socket也称作"套接字",用于描述IP地 ...
- 通信原理仿真100例 | 多普勒频移的matlab仿真
多普勒扩展的matlab仿真 代码 下面是一份简单的MATLAB代码,可以用来模拟多普勒扩展现象.该代码使用了一个具有随机相位的复指数信号作为原始信号,将其通过一个多普勒频移的信道进行传输,并对接收到 ...
最新文章
- 学习web前端难不难
- Comparison of long-read sequencing technologies in the hybrid assembly of complex bacterial genomes
- hdu1280 前m大的数(数组下标排序)
- SecureCRT脚本之WaitForString函数
- TCP为什么需要三次握手
- 在springboot中,如何读取配置文件中的属性
- (一)linux下hadoop安装配置
- shell里写个简单循环
- 浏览器用户用滤镜实现网页的翻转效果
- SmartSVN 11 破解 亲测可用 license
- 实例!AGV与MES对接的智能仓储系统设计
- CAD图纸的缩放——缩放上一个命令
- R语言和医学统计学(11):球形检验
- 1118 Birds in Forest (25分)
- 快速上手Android蓝牙串口开发
- SOP:Ubuntu20安装微信
- 商城小程序通过交易组件实现直播带货
- 探索AI实践最优解,AISummit全球人工智能技术大会完美落幕
- 安装海龟绘图类库(turtle)
- 必应输入法的分析与用户需求调查报告