通信原理仿真报告-数字传输系统的最佳接收与误码分析

通信原理仿真报告-数字传输系统的最佳接收与误码分析

一、概述

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πfctaisgT(t)sin2πfcti=1,2,3...160tTs
        其中, 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(Tt)
        则接收到 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/2Es1+1/20=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/2Pe1+1/2Pe2=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=1A,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(Tt)
        则接收到 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/2Es1+1/2Es1=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/2Pe1+1/2Pe2=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=(1PM )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(1M 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(1M 1)Q((M1)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 signalQ

bI2=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 signalI

n=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仿真能力上也有了提高。最重要的是我建立了理论到实践的逻辑关系,对通信原理这门课有了更多实际上的体会,也有更多学好它的信心。
        补充:作为通信专业重中之重的基础课,学完之后我初步对我们在学什么和我们将要学什么有了大概的了解,感觉懂了一点,也感觉该学的还有很多。

  • 7
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB-Simulink通信系统仿真是一种流行的工具,用于设计和分析各种通信系统。OFDM(正交频分复用)是一种广泛应用于现代无线通信系统中的调制技术。这里,我们将介绍关于邵玉斌的MATLAB-Simulink OFDM仿真实例分析。 OFDM是一种基于频率分集的多载波调制技术,它将带宽分成多个子载波,每个子载波都是正交的。OFDM在减小信号间干扰和抗多径衰落等方面具有优势,在WLAN,4G和5G等现代通信系统中广泛应用。 邵玉斌的MATLAB-Simulink OFDM仿真实例分析包括以下步骤: 1. 设置OFDM系统参数:包括子载波数目,循环前缀长度,调制方式和信道参数等。 2. 生成OFDM信号:使用MATLABSimulink生成OFDM调制信号,并添加高斯噪声以模拟实际信道环境。 3. 进行信道估计:使用已知的数据模式和接收到的信号,通过估计信道的频率响应和域响应来计算信道的衰落参数。 4. 相关处理:对接收信号进行相关处理,以检测传输的数据。 5. 解调和解码:使用逆过程解调和解码接收到的信号,以恢复原始数据。 6. 分析性能:通过计算误码率,比特错误率等性能指标来评估OFDM系统的性能。 通过这个仿真实例分析,我们可以得出一些结论和优化OFDM系统性能的方法。邵玉斌的MATLAB-Simulink OFDM仿真实例分析不仅可以帮助我们理解OFDM技术的原理和工作方式,还可以指导我们在实际通信系统中的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值