\quad 当一组信号序列 { b n } \{b_{n}\} {bn}需要通过信道传输时,首先通过线路编码为此消息序列增加冗余度以提高信道传输可靠性,从而获得已编码的信号序列 { a n } \{a_{n}\} {an},通过窄脉冲生成器获得与 { a n } \{a_{n}\} {an}对应的信号波形,通过发送滤波器后在信道中传输。
\quad 在接受该信号时,有低通滤波器与匹配滤波器两种方式对该信号进行接收,由于确定信号在受到加性高斯白噪声干扰下的最佳接收为采用匹配滤波器,使得在最佳采样时刻的信噪比最大,因此本文主要采用匹配滤波器进行信号接收,然后再选择合适的判决门限进行判决,可以使得误比特率最小。
由于信道带宽无限,因此发送波形可以采用有限方波脉冲,在信号为单极性不归零码时,发送序列为:
s i ( t ) = { i = 1 , s 1 ( t ) = A i = 0 , s 2 ( t ) = 0 (2-1) s_{i}(t)=\left\{ \begin{aligned} i & =1 ,& s_{1}(t)=A \\ i & =0 ,& s_{2}(t)=0 \end{aligned} \right.\tag{2-1} si(t)={ii=1,=0,s1(t)=As2(t)=0(2-1)
由此可得,该发送信号的冲激响应为下图所示:
当该信号以二进制传输时,2PAM信号的信息速率为 R b R_{b} Rb(单位bit/s),因此二进制的符号间隔为 T b = 1 R b T_{b}=\frac{1}{R_{b}} Tb=Rb1,信号序列示意图如下图所示:
在信道的传输过程中,噪声干扰不可避免,因此为信号加入均值为0,双边功率谱密度为 N 0 2 \frac{N_0}{2} 2N0的AWGN加性高斯白噪声 n w ( t ) n_w(t) nw(t),因此在二进制符号间隔时间 T b T_b Tb内收到的信号为
r ( t ) = s i ( t ) + n w ( t ) = { i = 1 , s 1 ( t ) + n w ( t ) i = 0 , s 2 ( t ) + n w ( t ) (2-2) r(t)=s_i(t)+n_w(t)=\left\{ \begin{aligned} i & =1 ,& s_{1}(t)+n_w(t) \\ i & =0 ,& s_{2}(t)+n_w(t) \end{aligned} \right.\tag{2-2} r(t)=si(t)+nw(t)={ii=1,=0,s1(t)+nw(t)s2(t)+nw(t)(2-2)
在对信号进行接收时,采用匹配滤波器,假设匹配滤波器的冲激响应 h ( t ) h(t) h(t)与 s 1 ( t ) s_1(t) s1(t)匹配,则
h ( t ) = s 1 ( T b − t ) (2-3) h(t)=s_1(T_b-t)\tag{2-3} h(t)=s1(Tb−t)(2-3)
因此,信道带宽无限时的单极性基带传输系统模型,如下图所示
当信道带宽受限时,若仍然采用矩形脉冲发送,则该发送信号的频谱无限受到信道带宽限制,将产生一定的误差与干扰。因此将发送调整为基于无码间干扰基带传输的升余弦滤波器。
在采用双极性不归零码进行传输时,发送序列为:
s i ( t ) = { i = 1 , s 1 ( t ) = + A i = 0 , s 2 ( t ) = − A (2-4) s_{i}(t)=\left\{ \begin{aligned} i & =1 ,& s_{1}(t)=+A \\ i & =0 ,& s_{2}(t)=-A \end{aligned} \right.\tag{2-4} si(t)={ii=1,=0,s1(t)=+As2(t)=−A(2-4)
由此可得,该发送信号的冲激响应为下图所示:
当该信号以二进制传输时,2PAM信号的信息速率为 R b R_{b} Rb(单位bit/s),因此二进制的符号间隔为 T b = 1 R b T_{b}=\frac{1}{R_{b}} Tb=Rb1,通过发送滤波器为升余弦滚降信号:
在信道的传输过程中,噪声干扰不可避免,因此为信号加入均值为0,双边功率谱密度为 N 0 2 \frac{N_0}{2} 2N0的AWGN加性高斯白噪声 n w ( t ) n_w(t) nw(t),因此在二进制符号间隔时间 T b T_b Tb内收到的信号为
r ( t ) = s i ( t ) + n w ( t ) = { i = 1 , s 1 ( t ) + n w ( t ) = + A + n w ( t ) i = 0 , s 2 ( t ) + n w ( t ) = − A + n w ( t ) (2-5) r(t)=s_i(t)+n_w(t)=\left\{ \begin{aligned} i & =1 ,& s_{1}(t)+n_w(t) =+A+n_w(t)\\ i & =0 ,& s_{2}(t)+n_w(t)=-A+n_w(t) \end{aligned} \right.\tag{2-5} r(t)=si(t)+nw(t)={ii=1,=0,s1(t)+nw(t)=+A+nw(t)s2(t)+nw(t)=−A+nw(t)(2-5)
在对信号进行接收时,采用匹配滤波器,假设匹配滤波器的冲激响应 h ( t ) h(t) h(t)与 s 1 ( t ) s_1(t) s1(t)匹配,由于发送信号采用升余弦滚降信号,则接收的匹配滤波器也为升余弦滚降信号:
h ( t ) = s 1 ( T b − t ) (2-6) h(t)=s_1(T_b-t)\tag{2-6} h(t)=s1(Tb−t)(2-6)
因此,信道带宽受限时的双极性基带传输系统模型如下:
由于信道带宽受限,因此使用升余弦滚降作为发送信号进行传输,使用四进制移相键控QPSK进行调制,则该发送信号具有四个相位状态,其信号表达式可以写成:
s i ( t ) = A c o s ( w c t + θ i ) s_i(t)=Acos(w_ct+\theta_i) si(t)=Acos(wct+θi)
其中 i = 0 、 1 、 2 、 3 i=0、1、2、3 i=0、1、2、3,QPSK传输具有两种常见的形式,其数字调制信号矢量图表示为:
在使用QPSK传输时,一般情况下,把QPSK分为两路BPSK进行传输,并且两路BPSK信号的相位关系为正交。因此,在传输系统中QPSK的系统模型如下:
使用多进制(M进制)进行传输,即使用正交幅度的不同对信号序列进行调制,则M进制的信号波形表达式为:
s Q A M ( t ) = a i c g T ( t ) c o s 2 π f c t − a i c g T ( t ) s i n 2 π f c t i = 1 , 2 , . . . M ; 0 < t < T s (4-1) s_{QAM}(t)=a_{i_c}g_T(t)cos2\pi f_ct-a_{i_c}g_T(t)sin2\pi f_ct \qquad i=1,2,...M;0
根据函数形式,可以将其表示为复包络信号的实部:
s Q A M ( t ) = R e [ ( a i c + j a i s ) g T ( t ) e 2 π f c t ] = R e [ V i e θ i g T ( t ) e 2 π f c t ] i = 1 , 2 , . . . M ; 0 < t < T s (4-2) s_{QAM}(t)=Re[(a_{i_c}+ja_{i_s})g_T(t)e^{2\pi f_ct}]=Re[V_ie^{\theta_i}g_T(t)e^{2\pi f_ct}]\qquad i=1,2,...M;0
其中 V i = a i c 2 + a i s 2 ; θ = a r c t a n a i s a i c V_i=\sqrt{a_{i_c}^2+a_{i_s}^2};\quad \theta=arctan\frac{a_{i_s}}{a_{i_c}} Vi=aic2+ais2;θ=arctanaicais\tag{4-3}
由此,在进行16QAM传输时,对应的数字调制信号矢量表示为下图所示:
在使用16QAM传输时,一般情况下,把16QAM分为两路 M \sqrt{M} M进制的序列进行传输,即在 M = 16 M=16 M=16时分为两路四进制序列进行传输。因此,在传输系统中16QAM的系统模型如下:
发送信号为 s i ( t ) s_i(t) si(t)
s i ( t ) = { s 1 ( t ) , ′ ′ 1 ′ ′ s 2 ( t ) , ′ ′ 0 ′ ′ (3-1) s_i(t)=\left\{ \begin{aligned} & s_{1}(t), &''1''\\ & s_{2}(t),& ''0'' \end{aligned} \right.\tag{3-1} si(t)={s1(t),s2(t),′′1′′′′0′′(3-1)
经过接收滤波器得到信号 r 0 ( t ) r_0(t) r0(t)
r 0 ( t ) = { r 10 ( t ) , ′ ′ 1 ′ ′ r 20 ( t ) , ′ ′ 0 ′ ′ (3-2) r_0(t)=\left\{ \begin{aligned} & r_{10}(t), &''1''\\ & r_{20}(t),& ''0'' \end{aligned} \right.\tag{3-2} r0(t)={r10(t),r20(t),′′1′′′′0′′(3-2) r 0 = r 0 ( t 0 ) = { r 10 ( t 0 ) = r 10 , ′ ′ 1 ′ ′ r 20 ( t 0 ) = r 20 , ′ ′ 0 ′ ′ (3-3) r_0=r_0(t_0)=\left\{ \begin{aligned} & r_{10}(t_0)=r_{10}, &''1''\\ & r_{20}(t_0)=r_{20},& ''0'' \end{aligned} \right.\tag{3-3} r0=r0(t0)={r10(t0)=r10,r20(t0)=r20,′′1′′′′0′′(3-3)
判决变量
r 0 = { A + n 0 , ′ ′ 1 ′ ′ n 0 , ′ ′ 0 ′ ′ (3-4) r_0=\left\{ \begin{aligned} & A+n_0, &''1''\\ & n_0,& ''0'' \end{aligned} \right.\tag{3-4} r0={A+n0,n0,′′1′′′′0′′(3-4)
由于信道中加性高斯白噪声的影响,信道转移的条件密度函数为
f ( r 0 ∣ s 1 ) = 1 2 π σ 0 2 e − ( r 0 − A ) 2 2 σ 0 2 (3-5) f(r_0|s_1)=\frac{1}{\sqrt{2\pi \sigma_0^2}}e^{-\frac{(r_0-A)^2}{2\sigma_0^2}}\tag{3-5} f(r0∣s1)=2πσ021e−2σ02(r0−A)2(3-5) f ( r 0 ∣ s 2 ) = 1 2 π σ 0 2 e − r 0 2 2 σ 0 2 (3-6) f(r_0|s_2)=\frac{1}{\sqrt{2\pi \sigma_0^2}}e^{-\frac{r_0^2}{2\sigma_0^2}}\tag{3-6} f(r0∣s2)=2πσ021e−2σ02r02(3-6)
将条件密度函数与判决信号 r 0 r_0 r0的关系展示为下图所示:
图中 V T V_T VT为判决门限电压,紫色阴影为 s 1 s_1 s1错误部分,蓝色阴影为 s 2 s_2 s2错误部分,根据高斯分布性质可得:
P ( e r r o r ∣ s 1 ) = P ( r 0 < V T ∣ s 1 ) = Q ( A − V T σ n ) (3-7) P(error|s_1 )=P(r_0
由图可知,存在一个最佳门限电压 V T V_T VT使得判决效果达到最佳,误码率在此时最低;而此门限电压 V T V_T VT为两条件密度函数的交点,并且与信号发生器“发0”和“发1”的概率有关。
此处假设信号发生器“发0”和“发1”的概率相同,即 p ( s 1 ) = p ( s 2 ) = 1 2 p(s_1)=p(s_2)=\frac{1}{2} p(s1)=p(s2)=21,根据最优判决门限公式:
V T ∗ = A 2 + σ 0 2 A l n P ( 发 s 1 ) P ( 发 s 2 ) (3-9) V_T^*=\frac{A}{2}+\frac{\sigma_0^2}{A}ln\frac{P(发s_1)}{P(发s_2)}\tag{3-9} VT∗=2A+Aσ02lnP(发s2)P(发s1)(3-9)
则单极性不归零码的最优判决门限电压 V T = A / 2 V_T=A/2 VT=A/2,由此计算误码率为:
P = P ( s 1 ) P ( e r r o r ∣ s 1 ) + P ( s 2 ) P ( e r r o r ∣ s 2 ) = = Q ( A 2 σ 0 ) = Q ( A 2 4 N 0 B ) = 1 2 e r f c ( A 2 8 N 0 B ) (3-10) P=P(s_1)P(error|s_1)+P(s_2)P(error|s_2)=\\ =Q(\frac{A}{2\sigma_0})=Q(\sqrt{\frac{A^2}{4N_0B}})=\frac{1}{2}erfc(\sqrt{\frac{A^2}{8N_0B}})\tag{3-10} P=P(s1)P(error∣s1)+P(s2)P(error∣s2)==Q(2σ0A)=Q(4N0BA2)=21erfc(8N0BA2)(3-10)
发送信号为 s i ( t ) s_i(t) si(t)
s i ( t ) = { s 1 ( t ) , ′ ′ 1 ′ ′ s 2 ( t ) , ′ ′ 0 ′ ′ (3-11) s_i(t)=\left\{ \begin{aligned} & s_{1}(t), &''1''\\ & s_{2}(t),& ''0'' \end{aligned} \right.\tag{3-11} si(t)={s1(t),s2(t),′′1′′′′0′′(3-11)
经过接收滤波器得到信号 r 0 ( t ) r_0(t) r0(t)
r 0 ( t ) = { r 10 ( t ) , ′ ′ 1 ′ ′ r 20 ( t ) , ′ ′ 0 ′ ′ (3-12) r_0(t)=\left\{ \begin{aligned} & r_{10}(t), &''1''\\ & r_{20}(t),& ''0'' \end{aligned} \right.\tag{3-12} r0(t)={r10(t),r20(t),′′1′′′′0′′(3-12) r 0 = r 0 ( t 0 ) = { r 10 ( t 0 ) = r 10 , ′ ′ 1 ′ ′ r 20 ( t 0 ) = r 20 , ′ ′ 0 ′ ′ (3-13) r_0=r_0(t_0)=\left\{ \begin{aligned} & r_{10}(t_0)=r_{10}, &''1''\\ & r_{20}(t_0)=r_{20},& ''0'' \end{aligned} \right.\tag{3-13} r0=r0(t0)={r10(t0)=r10,r20(t0)=r20,′′1′′′′0′′(3-13)
判决变量
r 0 = { + A + n 0 , ′ ′ 1 ′ ′ − A + n 0 , ′ ′ 0 ′ ′ (3-14) r_0=\left\{ \begin{aligned} & +A+n_0, &''1''\\ & -A+n_0,& ''0'' \end{aligned} \right.\tag{3-14} r0={+A+n0,−A+n0,′′1′′′′0′′(3-14)
由于信道中加性高斯白噪声的影响,信道转移的条件密度函数为
f ( r 0 ∣ s 1 ) = 1 2 π σ 0 2 e − ( r 0 − A ) 2 2 σ 0 2 (3-15) f(r_0|s_1)=\frac{1}{\sqrt{2\pi \sigma_0^2}}e^{-\frac{(r_0-A)^2}{2\sigma_0^2}}\tag{3-15} f(r0∣s1)=2πσ021e−2σ02(r0−A)2(3-15) f ( r 0 ∣ s 2 ) = 1 2 π σ 0 2 e − ( r 0 + A ) 2 2 σ 0 2 (3-16) f(r_0|s_2)=\frac{1}{\sqrt{2\pi \sigma_0^2}}e^{-\frac{(r_0+A)^2}{2\sigma_0^2}}\tag{3-16} f(r0∣s2)=2πσ021e−2σ02(r0+A)2(3-16)
将条件密度函数与判决信号 r 0 r_0 r0的关系展示为下图所示:
图中 V T V_T VT为判决门限电压,紫色阴影为 s 1 s_1 s1错误部分,蓝色阴影为 s 2 s_2 s2错误部分,根据高斯分布性质可得:
P ( e r r o r ∣ s 1 ) = P ( r 0 < V T ∣ s 1 ) = Q ( A − V T σ n ) (3-17) P(error|s_1 )=P(r_0
由图可知,存在一个最佳门限电压 V T V_T VT使得判决效果达到最佳,误码率在此时最低;而此门限电压 V T V_T VT为两条件密度函数的交点,并且与信号发生器“发0”和“发1”的概率有关。
此处假设信号发生器“发0”和“发1”的概率相同,即 p ( s 1 ) = p ( s 2 ) = 1 2 p(s_1)=p(s_2)=\frac{1}{2} p(s1)=p(s2)=21,根据最优判决门限公式:
V T ∗ = σ 0 2 A l n P ( 发 s 1 ) P ( 发 s 2 ) (3-19) V_T^*=\frac{\sigma_0^2}{A}ln\frac{P(发s_1)}{P(发s_2)}\tag{3-19} VT∗=Aσ02lnP(发s2)P(发s1)(3-19)
则单极性不归零码的最优判决门限电压 V T = 0 V_T=0 VT=0,由此计算误码率为:
P = P ( s 1 ) P ( e r r o r ∣ s 1 ) + P ( s 2 ) P ( e r r o r ∣ s 2 ) = = Q ( A σ 0 ) = Q ( A 2 N 0 B ) (3-20) P=P(s_1)P(error|s_1)+P(s_2)P(error|s_2)=\\ =Q(\frac{A}{\sigma_0})=Q(\sqrt{\frac{A^2}{N_0B}})\tag{3-20} P=P(s1)P(error∣s1)+P(s2)P(error∣s2)==Q(σ0A)=Q(N0BA2)(3-20)
\quad 对于一路QPSK信号,可以用串并变换将其分解为两路BPSK信号进行传输,因此对于信道带宽受限时的QPSK传输误码率分析,则可以对其中一路BPSK信号进行分析,而最终合成的QPSK信号的误码率由于 1 / 2 1/2 1/2等概的原因会与一路BPSK信号传输时的误码率在数值上相等。
\quad 因此先对一路BPSK信号进行分析,对于一路QPSK信号其最终的判决值 y y y 与信道内的高斯白噪声符合以下关系:
y = { E b + Z " 1 " − E b + Z " 0 " y=\left\{ \begin{aligned} & E_b+Z & "1" \\ & -E_b+Z & "0" \end{aligned} \right. y={Eb+Z−Eb+Z"1""0"
\quad 而在信道中的高斯白噪声方差满足 D ( Z ) = σ 2 = E b N 0 2 D(Z)=\sigma^2=\frac{E_bN_0}{2} D(Z)=σ2=2EbN0,因此可以分别得到在传送 s 1 、 s 2 s_1、s_2 s1、s2时得到判决值 y y y的条件概率密度函数:
p ( y ∣ s 1 ) = 1 2 π σ 2 e x p [ − ( y − E b ) 2 σ 2 ] p(y|s_1)=\frac{1}{\sqrt{2\pi\sigma^2}}exp[-\frac{(y-E_b)^2}{\sigma^2}] p(y∣s1)=2πσ21exp[−σ2(y−Eb)2]
p ( y ∣ s 1 ) = 1 2 π σ 2 e x p [ − ( y + E b ) 2 σ 2 ] p(y|s_1)=\frac{1}{\sqrt{2\pi\sigma^2}}exp[-\frac{(y+E_b)^2}{\sigma^2}] p(y∣s1)=2πσ21exp[−σ2(y+Eb)2]
\quad 由此可以得到单个符号误码率 P e 1 = Q ( E b 2 σ 2 ) = Q ( 2 E b N 0 ) = P e 2 P_{e1}=Q(\sqrt{\frac{E_b^2}{\sigma^2}})=Q(\sqrt{\frac{2E_b}{N_0}})=P_{e2} Pe1=Q(σ2Eb2)=Q(N02Eb)=Pe2,则一路BPSK的误码率 P b = Q ( 2 E b N 0 ) P_b=Q(\sqrt{\frac{2E_b}{N_0}}) Pb=Q(N02Eb),因此QPSK的误码率与BPSK误码率相等则QPSK的误码率为:
P b = Q ( 2 E b N 0 ) = 1 2 e r f c ( E b N 0 ) P_b=Q(\sqrt{\frac{2E_b}{N_0}})=\frac{1}{2}erfc(\sqrt{\frac{E_b}{N_0}}) Pb=Q(N02Eb)=21erfc(N0Eb)
\quad 对于一路MQAM信号,可以用串并变换将其分解为两路 M A S K \sqrt{M}ASK MASK信号进行传输,因此对于信道带宽受限时的16QAM传输误码率分析,则可以对其中一路 Q A S K QASK QASK信号进行分析,而最终合成的16QAM信号的误码率与MASK信号传输时的误码率在数值上相等。
\quad MQAM与MASK的误码率均取决于数字基带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 P_M PM的形式为:
P M = 4 ( 1 − 1 M ) Q ( 3 E s ( M − 1 ) N 0 ) P_M=4(1-\frac{1}{\sqrt{M}})Q(\sqrt{\frac{3E_s}{(M-1)N_0}}) PM=4(1−M1)Q((M−1)N03Es)
clear;close all;
%-----------------------------
%信道带宽无限时的单极性基带传输
%-----------------------------
%----------------参数设置------------------
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; %升余弦系数[df=alpha*rs]
NumBits=T*r_s; %传输bit数
NumCoff=40; %滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
%------------------------------------------
%---------------发送滤波器----------------
g_T=[ones(1,f_sample/r_s),zeros(1,31)]; %发送滤波器,矩形脉冲
b1=(sign(rand(1,NumBits)-0.5)+1)*0.5; %随机产生0、1等概信号序列
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b1;
b3=reshape(b2,1,f_sample/r_s*NumBits); %原始数字序列
s=conv(b3,g_T); %将脉冲序列转换为矩形序列
%-----------------------------------------
%-------信道传输时加入加性高斯白噪声--------
N_0=10^(-5); %噪声功率谱
noise_w=wgn(1,length(s),N_0*f_sample,'linear'); %产生白噪声
r=s+noise_w; %叠加白噪声
%-----------------------------------------
%------------------接收机------------------
g_R=[ones(1,f_sample/r_s),zeros(1,30)]; %匹配滤波器
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);
%-------------------------------------------
%------------------画图--------------------
myeyediagram=eyediagram(y1(1:length(y1)),f_sample/r_s); %眼图
figure(2);
subplot(311);plot(s);
title('发射器发出信号序列s(t)');
xlabel("Time t (s)");ylabel("Symbol s(t)");
subplot(312);plot(r);
title('传输序列加噪s(t)+n_w(t)');
xlabel("Time t (s)");ylabel("Symbol s(t)+n_w(t)");
subplot(313);plot(y1);
title('接收机获得的信号波形');
xlabel("Time t (s)");ylabel("Symbol y(t)");
% subplot(2,2,4);plot(s);hold on;plot(y1);legend('传输的波形','接受的波形');
figure(3);
subplot(3,1,1);stem(b3,'.');
title('原始信号序列');
xlabel("Time t (s)");ylabel("Symbol \{b_n\}");
subplot(3,1,2);stem(y3,'.');
title('接收数字序列');
xlabel("Time t (s)");ylabel("Symbol \{b_n'\}");
subplot(3,1,3);stem(b3,'.');hold on;stem(B,'.');legend('原始数字序列','接收数字序列');
title('原始与接收数字序列对比');
xlabel("Time t (s)");ylabel("Symbol \{b_n\} and \{b_n'\}");
sn=0.1:0.01:100; %定义信噪比序列
snlg=20*log10(sn); %将信噪比转化为dB表示
ssingle=sqrt(sn/2);
bsingle=erfc(ssingle)/sqrt(2); %求单极性的误比特率序列
figure(4);
semilogy(snlg,bsingle);
axis([-20 30 0.0000001 1]);
title('NRZ');
xlabel('输单极性不归零码入信噪比');
ylabel('误比特率')
%------------------------------------------
\quad 在以上程序中,使用rand()函数以及限制条件产生随机0、1序列,由于信道带宽无限则使用矩形波作为成型滤波器产生发送波形(如下图1)
\quad 然后通过AWGN信道,等同于向发送波形中叠加高斯白噪声(如下图2)
\quad 采用匹配滤波器对下图2中的信号进行接收,由于信道带宽无限,则也采用矩形波作为接收的匹配滤波器,得到接收信号(如下图3)
\quad 使用眼图对接收信号进行分析,从而确定在进行0、1判决时的判决门限、最佳抽样时刻以及抽样时间等,如下图所示
\quad 对比原始信号序列(下图1)以及接收后采样得到的信号序列(下图2),使用判决门限进行判决将接收采样后的序列恢复成0、1序列,与原始序列进行比对,则可以得到本次传输的误码率
本次传输的误码率为:
\quad 通过理论误码率对单极性不归零码的误码率作分析,以信噪比SNR(单位dB)作为横轴,绘制误码率变化曲线如下:
clear;close all;
%------------------------------
%带宽受限,双极性不归零码传输
%------------------------------
%----------------------参数设置---------------------
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=30; %滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
%----------------------------------------------------
%-------------------------------信号发生器------------------------------
g_T=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample); %升余弦滤波器
b1=sign(rand(1,NumBits)-0.5); %原始0、1数字序列
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b1;
b3=reshape(b2,1,f_sample/r_s*NumBits); %原始数字序列
s=conv(b3,g_T); %发送的信号波形
%-----------------------------------------------------------------------
%------------------------------AWGN高斯信道------------------------------
%加入高斯白噪声
N_0=10^(-5); %功率谱密度
noise_w=wgn(1,length(s),N_0*f_sample,'linear'); %产生白噪声
r=s+noise_w; %叠加白噪声
%------------------------------------------------------------------------
%---------------------------------接收机---------------------------------
g_R=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample); %升余弦滤波器(MF)
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);
%---------------------------------------------
%--------------------------------作图------------------------------------
myeyediagram=eyediagram(y1(1:length(y1)),f_sample/r_s);%眼图
figure(2);
subplot(311);plot(s);
title('发射器发出信号序列s(t)');
xlabel("Time t (s)");ylabel("Symbol s(t)");
subplot(312);plot(r);
title('传输序列加噪s(t)+n_w(t)');
xlabel("Time t (s)");ylabel("Symbol s(t)+n_w(t)");
subplot(313);plot(y1);
title('接收机获得的信号波形');
xlabel("Time t (s)");ylabel("Symbol y(t)");
% subplot(2,2,4);plot(s);hold on;plot(y1);legend('传输的波形','接受的波形');
figure(3);
subplot(3,1,1);stem(b3,'.');
title('原始信号序列');
xlabel("Time t (s)");ylabel("Symbol \{b_n\}");
subplot(3,1,2);stem(y2,'.');
title('接收数字序列');
xlabel("Time t (s)");ylabel("Symbol \{b_n'\}");
subplot(3,1,3);stem(b3,'.');hold on;stem(5*B,'.');legend('原始数字序列','恢复的数字序列');
title('原始与接收数字序列对比');
xlabel("Time t (s)");ylabel("Symbol \{b_n\} and \{b_n'\}");
sn=0.1:0.01:100; %定义信噪比序列
snlg=20*log10(sn); %将信噪比转化为dB表示
sdouble=sqrt(sn);
bdouble=erfc(sdouble)/sqrt(2); %求双极性的误比特率序列
figure(4);
semilogy(snlg,bdouble);
axis([-20 30 0.0000001 1]);
title('双极性不归零码NRZ');
xlabel('输入信噪比/dB');
ylabel('误比特率')
%------------------------------------------------------------------------
\quad 在以上程序中,使用rand()函数以及限制条件产生随机-1、+1序列,由于信道带宽受限则使用升余弦滚降作为成型滤波器产生发送波形(如下图1)
\quad 然后通过AWGN信道,等同于向发送波形中叠加高斯白噪声(如下图2)
\quad 采用匹配滤波器对下图2中的信号进行接收,由于信道带宽受限,则也采用升余弦滚降作为接收的匹配滤波器,得到接收信号(如下图3)
\quad 使用眼图对接收信号进行分析,从而确定在进行-1、+1判决时的判决门限、最佳抽样时刻以及抽样时间等,如下图所示
\quad 对比原始信号序列(下图1)以及接收后采样得到的信号序列(下图2),使用判决门限进行判决将接收采样后的序列恢复成-1、+1序列,与原始序列进行比对,则可以得到本次传输的误码率
\quad 通过理论误码率对单极性不归零码的误码率作分析,以信噪比SNR(单位dB)作为横轴,绘制误码率变化曲线如下:
clear;close all;
%------------------------------
%带宽受限,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=30; %滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
%----------------------------------------------------
%-------------------------信号发生器------------------------------
g_T = firrcos(NumCoff,r_s/2,alpha*r_s,f_sample); %升余弦滤波器
b=sign(rand(1,NumBits*2)-0.5); %原始-1、1数字序列
%串并变换,把一路信号分为两路
b1 = b(:,2:2:end); %偶序列
b2 = b(:,1:2:end); %奇序列
%第一路信号调制
b1_2 = zeros(f_sample/r_s,NumBits);
b1_2(1,:) = b1;
b1_3 = reshape(b1_2,1,f_sample/r_s*NumBits);
s1 = conv(b1_3,g_T); %第一路发送信号
fc = 100;
k = 0:N_sample-1+NumCoff;
c1 = cos(2*pi*fc*k*T_sample);
s1 = s1.*c1; %第一路信号载波调制
%第二路信号调制
b2_2 = zeros(f_sample/r_s,NumBits);
b2_2(1,:) = b2;
b2_3 = reshape(b2_2,1,f_sample/r_s*NumBits);
s2 = conv(b2_3,g_T);
fc = 100;
k = 0:N_sample-1+NumCoff;
c2 = -sin(2*pi*fc*k*T_sample);
s2 = s2.*c2;
%最终发送信号
s = s1 + s2;
%----------------------------------------------------------------
%------------------------------AWGN高斯信道------------------------------
%加入高斯白噪声
N_0=10^(-5); %功率谱密度
noise_w=wgn(1,length(s),N_0*f_sample,'linear'); %产生白噪声
r=s+noise_w; %叠加白噪声
%------------------------------------------------------------------------
%---------------------------------接收机---------------------------------
g_R=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample); %升余弦滤波器(MF)
%第一路信号解调(相当于通过相关接收机)
x1 = r.*c1;
x1 = conv(x1,g_R);
%第二路信号解调(相当于通过相关接收机)
x2 = r.*c2;
x2 = conv(x2,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(x2));
sample3(NumCoff+1:NumCoff+f_sample/r_s*NumBits) = sample2;
%第一路信号抽样与判决
y1 = x1.*sample3;
y1(:,all((y1==0),1)) = [];
b1_r(y1>0) = 1;
b1_r(y1<=0) = -1;
%第二路信号抽样与判决
y2 = x2.*sample3;
y2(:,all((y2==0),1)) = [];
b2_r(y2>0) = 1;
b2_r(y2<=0) = -1;
%两路支路合并成一路
b_r(2,:) = b1_r;
b_r(1,:) = b2_r;
b_r = reshape(b_r,1,length(b));
%误码率计算
BER = length(find(b~=b_r))/(NumBits*2);
fprintf('误码率=%f',BER);
dB_EbN0 = 0.1:0.01:100;
EbN0 = 10.^(dB_EbN0/10);
BER = 0.5.*erfc(sqrt(EbN0));
%------------------------------------------------------------------------
%--------------------------------作图------------------------------------
myeyediagram1 = eyediagram(x1,f_sample/r_s);
myeyediagram2 = eyediagram(x2,f_sample/r_s);
myeyediagram = eyediagram(x1+x2,f_sample/r_s);
figure;
subplot(311);plot(s1);
title('第一路信号时域波形');ylabel('Ampl');xlabel('Time t');
subplot(312);plot(s2);
title('第二路信号时域波形');ylabel('Ampl');xlabel('Time t');
figure;
subplot(311);plot(s);
title('合路信号时域波形');ylabel('Ampl');xlabel('Time t');
subplot(312);plot(r);
title('加噪后合路信号时域波形');ylabel('Ampl');xlabel('Time t');
figure;semilogy(dB_EbN0,BER);
title('误码率曲线QPSK');xlabel('E_b/N_0');ylabel('误码率');
figure;
subplot(311);stem(b,'.');
title('原发送信号');xlabel('Sequence n');ylabel('Ampl');
subplot(312);stem(b_r,'.');
title('接收后恢复的信号');xlabel('Sequence n');ylabel('Ampl');
%------------------------------------------------------------------------
\quad 使用rand()函数产生随机序列,再用限制条件转换为-1、+1序列,取偶序列作为第一路发送信号、取奇序列作为第二路发送信号,由于信道带宽受限,因此使用升余弦滚降作为成型滤波器。两路信号均使用BPSK方式调制,因此均需要乘以载波信号 c o s 2 π f c t cos2\pi f_ct cos2πfct,但由于QPSK要求两路信号保持正交关系,则第二路乘以载波信号 − s i n 2 π f c t -sin2\pi f_ct −sin2πfct
\quad 使用眼图对接收信号进行分析,从而确定在进行-1、+1判决时的判决门限、最佳抽样时刻以及抽样时间等,如下图所示
\quad 对比原始信号序列(下图1)以及接收后采样得到的信号序列(下图2),使用判决门限进行判决将接收采样后的序列恢复成-1、+1序列,与原始序列进行比对,则可以得到本次传输的误码率
本次仿真误码率:
\quad 通过理论误码率对单极性不归零码的误码率作分析,以信噪比SNR(单位dB)作为横轴,绘制误码率变化曲线如下:
clear;close all;
%------------------------------
%带宽受限,16QAM传输
%------------------------------
%----------------------参数设置---------------------
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=10; %滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
%----------------------------------------------------
%-------------------------信号发生器------------------------------
g_T = firrcos(NumCoff,r_s/2,alpha*r_s,f_sample); %升余弦滤波器
b = (sign(rand(1,NumBits*4)-0.5)+1)*0.5; %原始-1、1数字序列
%串并变换,把一路信号分为两路
b1 = b(:,2:2:end); %偶序列(二进制)
b2 = b(:,1:2:end); %奇序列(二进制)
%把二进制转换为四进制
b1_1 = reshape(b1,2,length(b1)/2);
b2_1 = reshape(b2,2,length(b2)/2);
b1_Q = zeros(1,NumBits); %第一路四进制序列
b2_Q = zeros(1,NumBits); %第二路四进制序列
for i = 1:1:NumBits
b1_Q(1,i) = b1_1(1,i)*2+b1_1(2,i);
b2_Q(1,i) = b2_1(1,i)*2+b2_1(2,i);
end
%第一路四进制序列调制
b1_Q_2 = zeros(f_sample/r_s,NumBits);
b1_Q_2(1,:) = b1_Q;
b1_Q_3 = reshape(b1_Q_2,1,f_sample/r_s*NumBits);
s1 = conv(b1_Q_3,g_T);
fc = 100;
k = 0:N_sample-1+NumCoff;
c1 = cos(2*pi*fc*k*T_sample);
s1 = s1 .* c1;
%第二路四进制序列调制
b2_Q_2 = zeros(f_sample/r_s,NumBits);
b2_Q_2(1,:) = b2_Q;
b2_Q_3 = reshape(b2_Q_2,1,f_sample/r_s*NumBits);
s2 = conv(b2_Q_3,g_T);
fc = 100;
k = 0:N_sample-1+NumCoff;
c2 = -sin(2*pi*fc*k*T_sample);
s2 = s2 .* c2;
%最终发送信号
s = s1 + s2;
%----------------------------------------------------------------
%------------------------------AWGN高斯信道------------------------------
%加入高斯白噪声
N_0=10^(-7); %功率谱密度
noise_w=wgn(1,length(s),N_0*f_sample,'linear'); %产生白噪声
r=s+noise_w; %叠加白噪声
%------------------------------------------------------------------------
%---------------------------------接收机---------------------------------
g_R=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample); %升余弦滤波器(MF)
%第一路信号解调
x1 = r.*c1;
x1 = conv(x1,g_R);
%第二路信号解调
x2 = r.*c2;
x2 = conv(x2,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(x1));
sample3(NumCoff+1:NumCoff+f_sample/r_s*NumBits) = sample2;
%抽样与判决
judge = [0.1,0.07,0.03]; %判决值的大小根据眼图最大睁开处确定
%第一路信号判决
y1 = x1.*sample3;
y1(:,all((y1==0),1)) = [];
for i = 1:1:NumBits
if((y1(1,i))>judge(1))
y1(1,i) = 3;
elseif((y1(1,i))>judge(2))
y1(1,i) = 2;
elseif((y1(1,i))>judge(3))
y1(1,i) = 1;
else
y1(1,i) = 0;
end
end
%第二路信号判决
judge = [0.102,0.055,0.02]; %判决值的大小根据眼图最大睁开处确定
y2 = x2.*sample3;
y2(:,all((y2==0),1)) = [];
for i = 1:1:NumBits
if((y2(1,i))>judge(1))
y2(1,i) = 3;
elseif((y2(1,i))>judge(2))
y2(1,i) = 2;
elseif((y2(1,i))>judge(3))
y2(1,i) = 1;
else
y2(1,i) = 0;
end
end
%第一路信号 四进制转二进制
b1_r_B = zeros(1,NumBits*2);
for i = 1:1:NumBits
if((y1(1,i))==3)
b1_r_B(1,2*i) = 1;b1_r_B(1,2*i-1) = 1;
elseif((y1(1,i))==2)
b1_r_B(1,2*i) = 0;b1_r_B(1,2*i-1) = 1;
elseif((y1(1,i))==1)
b1_r_B(1,2*i) = 1;b1_r_B(1,2*i-1) = 0;
elseif((y1(1,i))==0)
b1_r_B(1,2*i) = 0;b1_r_B(1,2*i-1) = 0;
end
end
%第二路信号 四进制转二进制
b2_r_B = zeros(1,NumBits*2);
for i = 1:1:NumBits
if((y2(1,i))==3)
b2_r_B(1,2*i) = 1;b2_r_B(1,2*i-1) = 1;
elseif((y2(1,i))==2)
b2_r_B(1,2*i) = 0;b2_r_B(1,2*i-1) = 1;
elseif((y2(1,i))==1)
b2_r_B(1,2*i) = 1;b2_r_B(1,2*i-1) = 0;
elseif((y2(1,i))==0)
b2_r_B(1,2*i) = 0;b2_r_B(1,2*i-1) = 0;
end
end
%两路二进制序列合成一路
b_r_B(2,:) = b1_r_B;
b_r_B(1,:) = b2_r_B;
b_r_B = reshape(b_r_B,1,NumBits*4);
%------------------------------------------------------------------------
%误码率
BER = length(find(b~=b_r_B))/(NumBits*4);
fprintf('误码率=%f',BER);
%误码率曲线
dB_EbN0 = 0.1:0.01:100;
EbN0 = 10.^(dB_EbN0/10);
EbN0 = EbN0/3;
BER = 0.5.*erfc(sqrt(EbN0));
BER = (2)*BER;
%--------------------------------作图------------------------------------
myeyediagram1 = eyediagram(x1,f_sample/r_s);
myeyediagram2 = eyediagram(x2,f_sample/r_s);
figure;
subplot(311);plot(s1);
title('第一路信号时域波形');ylabel('Ampl');xlabel('Time t');
subplot(312);plot(s2);
title('第二路信号时域波形');ylabel('Ampl');xlabel('Time t');
figure;
subplot(311);plot(s);
title('合路信号时域波形');ylabel('Ampl');xlabel('Time t');
subplot(312);plot(r);
title('加噪后合路信号时域波形');ylabel('Ampl');xlabel('Time t');
figure;
subplot(311);plot(x1);
title('第一路解调信号');ylabel('Ampl');xlabel('Time t');
subplot(312);plot(x2);
title('第二路解调信号');ylabel('Ampl');xlabel('Time t');
subplot(311);stem(b,'.');
title('原发送信号');xlabel('Sequence n');ylabel('Ampl');
subplot(312);stem(b_r_B,'.');
title('接收后恢复的信号');xlabel('Sequence n');ylabel('Ampl');
figure;semilogy(dB_EbN0,BER);
title('误码率曲线16QAM');xlabel('E_b/N_0');ylabel('误码率');
%------------------------------------------------------------------------
\quad 使用rand()函数产生随机序列,再用限制条件转换为-1、+1序列,取偶序列作为第一路发送信号、取奇序列作为第二路发送信号,由于信道带宽受限,因此使用升余弦滚降作为成型滤波器。两路信号均使用4ASK方式调制,因此均需要乘以载波信号 c o s 2 π f c t cos2\pi f_ct cos2πfct,但由于QPSK要求两路信号保持正交关系,则第二路乘以载波信号 − s i n 2 π f c t -sin2\pi f_ct −sin2πfct
\quad 使用眼图对接收信号进行分析,从而确定在进行-1、+1判决时的判决门限、最佳抽样时刻以及抽样时间等,如下图所示
\quad 对比原始信号序列(下图1)以及接收后采样得到的信号序列(下图2),使用判决门限进行判决将接收采样后的序列恢复成-1、+1序列,与原始序列进行比对,则可以得到本次传输的误码率
本次仿真误码率:
\quad 通过理论误码率对单极性不归零码的误码率作分析,以信噪比SNR(单位dB)作为横轴,绘制误码率变化曲线如下:
\quad 通过此次仿真,可见当信道噪声增大、输入信噪比减小时,眼图中波动逐渐变大。对于单极性码和双极性码进行仿真可以看到,双极性码的最佳接受平均误码率比单极性小。数字信号基带传输系统的构建与传输信道的带宽有着密切的联系,通过匹配滤波器进行信号接收,相比低通滤波器LPF的接收有更好的信号噪声抑制效果。
\quad 对比以上4种数字通信系统的误码性能,绘制误码率曲线如下图所示,可见QPSK的误码性能最好,其次为16QAM;在使用数字基带的方式进行方式进行发送时,双极性信号的误码性能优于单极性码;总体上频带传输的误码性能更优。