在数字信号传输系统中,数字调制器具有二进制及M进制之分,如果通信信道的传递函数是低通型的,则该信道为基带信道,将数字基带信号通过基带传输,则称该传输系统为数字基带传输系统,而在实际的传输过程中,数字通信中的信道往往是限带的,因此需要考虑带宽受限时的传输性能。在传输过程中受到噪声的影响,需要使用匹配滤波器对其进行接收,可以使其得到最佳接收时的信号,并对其进行采样判决,并进行信噪比分析,可以得到相应的误码率并进一步分析此基带传输系统的性能。
理想的无限带宽进行传输时,可以采用矩形波作为输入信号,并采用单极性不归零码进行传输。
对输入信号进行时域与频域分析得到相应的时域和频域波形:
可以看出第一过零点为f =rs ,使用匹配滤波器进行接收,框图如下:
可以知道:
r ( t ) = s i ( t ) + n w ( t ) − − − − − − − − [ 1 ] r(t) = s ~i~(t) + n~w~(t) --------[1] r(t)=s i (t)+n w (t)−−−−−−−−[1]
令h(t)与s1(t)相匹配
h ( t ) = s ( T b − t ) − − − − − − − − − − [ 2 ] h(t) = s(T~b~-t) ----------[2] h(t)=s(T b −t)−−−−−−−−−−[2]
则输出y(t)在Tb采样时刻为
∫ 0 T b s 1 2 ( τ ) d τ + ∫ 0 T b s 2 ( τ ) n w ( τ ) d τ = E b + Z − − − − − [ 3 ] \int_0^{Tb} {s_1^2(τ)} \,{\rm d}τ +\int_0^{Tb} {s_2(τ)n_w(τ)} \,{\rm d}τ=E_b+Z-----[3] ∫0Tbs12(τ)dτ+∫0Tbs2(τ)nw(τ)dτ=Eb+Z−−−−−[3]
其中 E b E_b Eb为比特能量,Z为高斯随机变量,其条件均值与方差分别为0, N 0 E b / 2 N_0E_b/2 N0Eb/2,同理也可以得到当发送信号为“0”时的采样值y的表达式,可以得到最佳判决门限为:
V T = δ 2 2 E b l n p ( s 2 ) p ( s 1 ) − − − − − − − [ 4 ] V_T = \frac{ δ^2}{2E_b}ln\frac{ p(s_2)}{p(s_1)} -------[4] VT=2Ebδ2lnp(s1)p(s2)−−−−−−−[4]
随后根据判决门限,大于 V T V_T VT的判定为‘’1‘’,小于为‘’0‘’。
由上图的概率密度函数可以分析出相应的误码率。
信号受限时,采用升余弦滤波器进行传输,并采用双极性序列为信息传输序列,以免在频域造成频带干扰。
双极性序列为:
i = 1 , a 1 = + A i=1,a_1 =+A i=1,a1=+A
i = 2 , a 2 = − A − − − − − [ 5 ] i=2,a_2 = -A-----[5] i=2,a2=−A−−−−−[5]
由图可以看出该滤波器的带宽W= 1 + α 2 T s \frac{ 1+α}{2T_s} 2Ts1+α 。在经过如下的传输系统
想要实现无码间干扰,则需要满足
H ( f ) = G T ( f ) C ( f ) G R ( f ) = ∣ H R C ( f ) ∣ e − j 2 Π f t 0 − − − − [ 6 ] H(f) = G_T(f)C(f)G_R(f) = |H_{RC}(f)|e^{-j2Πft_0} ----[6] H(f)=GT(f)C(f)GR(f)=∣HRC(f)∣e−j2Πft0−−−−[6]
即发送滤波器与接收滤波器的传递函数的模值要近似于根升余弦频谱,才可为最佳接收系统。
四项移相键控(QPSK)信号又名四进制移相键控,该信号的正弦载波有4个可能的离散相位状态,每个载波相位携带2个二进制符号,其信号的表达式为
s i ( t ) = A c o s ( 2 Π f c t + θ i ) i = 1 , 2 , 3 , 40 ≤ t ≤ T s − − − [ 7 ] s_i(t) = Acos(2Πf_ct + θ_i) i=1,2,3,4 0≤t≤T_s ---[7] si(t)=Acos(2Πfct+θi)i=1,2,3,40≤t≤Ts−−−[7]
由此可以看出有4种相位,4中可能的状态。此处我们采取 θ i = ( 2 i − 1 ) Π / 4 θ_i=(2i-1)Π/4 θi=(2i−1)Π/4的QPSK信号。
可以将 s i ( t ) s_i(t) si(t)写为
s i ( t ) = A ( c o s θ i c o s w c t − s i n θ i s i n w c t ) 0 ≤ t ≤ T s − − − − [ 8 ] s_i(t) = A(cosθ_icosw_ct - sinθ_isinw_ct) 0≤t≤T_s ----[8] si(t)=A(cosθicoswct−sinθisinwct)0≤t≤Ts−−−−[8]
则
s i ( t ) = A 2 ( I ( t ) c o s w c t − Q ( t ) s i n w c t ) 0 ≤ t ≤ T s − − − − [ 8 ] s_i(t) = \frac{A}{\sqrt{2}}(I(t)cosw_ct - Q(t)sinw_ct) 0≤t≤T_s ----[8] si(t)=2A(I(t)coswct−Q(t)sinwct)0≤t≤Ts−−−−[8]
通过正交调制系统如下
可以得到QPSK相应的频谱波形
由于QPSK信号可以看为同相及正交支路2PSK的叠加,所以在解调时可对两路信号分别进行2PSK解调,然后进行串并变换,得到输出数据。需要单独对两路的2PSK信号进行与相应的匹配滤波器进行滤波得到最佳接受时的波形。接受时的系统框图如下。
MQAM可以看成联合控制正弦载波的幅度及相位的数字调制信号,信号波形可以表示为两个归一化正交基函数的线性集合,即
s i ( t ) = s i 1 f 1 ( t ) + s i 2 f 2 ( t ) i = 1 , 2 , . . . M , ( 0 ≤ t ≤ T s ) − − − − − − [ 9 ] s_i(t) = s_{i1}f_1(t) + s_{i2}f_2(t)i=1,2,...M,( 0≤t≤T_s )------[9] si(t)=si1f1(t)+si2f2(t)i=1,2,...M,(0≤t≤Ts)−−−−−−[9]
由此可以得到两个正交基函数为
f 1 ( t ) = 2 E g g T ( t ) c o s ( w c t ) 0 ≤ t ≤ T s − − − − − [ 10 ] f_1(t) =\sqrt{\frac{2}{E_g}}g_T(t)cos(w_ct) 0≤t≤T_s -----[10] f1(t)=Eg2gT(t)cos(wct)0≤t≤Ts−−−−−[10]
f 1 ( t ) = − 2 E g g T ( t ) s i n ( w c t ) 0 ≤ t ≤ T s − − − − − [ 11 ] f_1(t) =-\sqrt{\frac{2}{E_g}}g_T(t)sin(w_ct) 0≤t≤T_s -----[11] f1(t)=−Eg2gT(t)sin(wct)0≤t≤Ts−−−−−[11]
由此可以得到16QAM信号的信号空间图如下
由此可以得到16QAM的系统接收框图
对于该信号分别按同相与正交支路的 M \sqrt{M} M进制ASK进行解调,在采样、判决后经并串变换恢复数据。
概率密度函数分布图如下
由2.1中的概率密度函数可以分析出
发 s 1 s_1 s1的错误概率为
p ( e ∣ s 1 ) = P ( r 0 < V T ∣ s 1 ) = Q ( A − V T δ n ) − − − − − − [ 12 ] p(e|s_1) = P(r_0
发 s 2 s_2 s2的错误概率为
p ( e ∣ s 2 ) = P ( r 0 < V T ∣ s 2 ) = Q ( V T δ n ) − − − − − − [ 13 ] p(e|s_2) = P(r_0
因此可以得到最佳接受时的平均误码率为
P e = P ( r 0 < V T ∣ s 2 ) = Q ( V T δ n ) − − − − − − [ 13 ] P_e = P(r_0
又因为最优判决门限为
V t = A / 2 V_t =A/2 Vt=A/2
故 P e = Q ( A 2 4 N 0 B ) − − − − − − − [ 14 ] P_e = Q(\sqrt{\frac{A^2}{4N_0B}})-------[14] Pe=Q(4N0BA2)−−−−−−−[14]
由于带宽受限时采用的双极性不归零码进行传输,此处采用2PAM进行传输
s ( t ) = { A c o s w c t , ’1’ − A c o s w c t , ’0’ − − − − [ 15 ] s(t) = \begin{cases} Acosw_ct, & \text{'1'} \\ -Acosw_ct, & \text{'0'} \end{cases} ----[15] s(t)={Acoswct,−Acoswct,’1’’0’−−−−[15]
经过最佳接收后的概率密度分布图为
概率密度函数分布图如下
可以得到相应的概率密度函数为
发 s 1 s_1 s1时
P ( y ∣ s 1 ) = 1 2 Π δ 2 e x p [ − ( y − E b ) 2 δ 2 ] ⟹ P ( y ∣ s 1 ) = Q ( 2 E b N 0 ) (16) \tag{16}P(y|s_1)=\frac{1}{\sqrt{2Πδ^2}}exp[-\frac{(y-E_b)^2}{δ^2}] \implies P(y|s_1) =Q(\sqrt{\frac{2E_b}{N_0}}) P(y∣s1)=2Πδ21exp[−δ2(y−Eb)2]⟹P(y∣s1)=Q(N02Eb)(16)
发 s 2 s_2 s2时
P ( y ∣ s 2 ) = 1 2 Π δ 2 e x p [ − ( y − E b ) 2 δ 2 ] ⟹ P ( y ∣ s 2 ) = Q ( 2 E b N 0 ) − − [ 17 ] P(y|s_2)=\frac{1}{\sqrt{2Πδ^2}}exp[-\frac{(y-E_b)^2}{δ^2}] \implies P(y|s_2) =Q(\sqrt{\frac{2E_b}{N_0}})--[17] P(y∣s2)=2Πδ21exp[−δ2(y−Eb)2]⟹P(y∣s2)=Q(N02Eb)−−[17]
故
P b = Q ( 2 E b N 0 ) P_b= Q(\sqrt{{\frac{2E_b}{N_0}}}) Pb=Q(N02Eb)
由分析可以知道对于QPSK而言,可以看成同相正交之路2PSK的叠加,QPSK的同相支路的四进制是二进制信息速率的一半,即 T s = 2 T b T_s=2T_b Ts=2Tb,并且QPSK的同相支路或正交支路的信息功率是总功率的一半,于是,可以得到I支路以及Q支路的平均误码率为
P e I = P e Q = 1 2 e r f c [ ( A 2 ) 2 ( 2 T b ) 2 N 0 ] = 1 2 e r f c ( E b N 0 ) − − [ 18 ] P_{eI}=P_{eQ}=\frac{1}{2}erfc[\sqrt{\frac{(\frac{A}{\sqrt{2}})^2(2T_b)}{2N_0}}] =\frac{1}{2}erfc(\sqrt{\frac{E_b}{N_0}})--[18] PeI=PeQ=21erfc[2N0(2A)2(2Tb)]=21erfc(N0Eb)−−[18]
其中 E b = A 2 2 T b E_b =\frac{A^2}{2}T_b Eb=2A2Tb
由于QPSK发端信源输出的二进制符号‘’1‘’和‘0’等概出现,二进制码元经串并变换后在同相支路以及正交之路也是等概分布,所以其总的平均误比特率与I之路和Q支路的平均误码率是相同的,即
P b = P e I = P e Q = Q ( 2 E b N 0 ) − − − − [ 19 ] P_b =P_{eI}=P_{eQ}=Q(\sqrt{\frac{2E_b}{N_0}})----[19] Pb=PeI=PeQ=Q(N02Eb)−−−−[19]
矩形星座QAM的最佳接收误码率取决于数字基带MPAM的误码率,MPAM的正确判决符号的概率为
] P c = ( 1 − P M ) 2 − − − − − − [ 20 ] ]P_c = (1-P_{\sqrt{M}})^2 ------[20] ]Pc=(1−PM)2−−−−−−[20]
式中, P M P_{\sqrt{M}} PM表示同相或正交支路, M \sqrt{M} M进制ASK的误码率,该 M \sqrt{M} M进制ASK的平均功率是MQAM信号总的平均功率 P s P_s Ps的一半,即
P M = 2 ( 1 − 1 M ) Q ( d m i n 2 2 N 0 − − − − − [ 21 ] P_{\sqrt{M}}=2(1-\frac{1}{\sqrt{M}})Q(\sqrt{\frac{d_{min}^2}{2N_0}} -----[21] PM=2(1−M1)Q(2N0dmin2−−−−−[21]
故可以得到16QAM的误码率为
P 16 = 1 − P c = 2 P M − P M 2 − − − − − − − [ 22 ] P_{16}=1-P_c=2P_{\sqrt{M}}-P^2_{\sqrt{M}} -------[22] P16=1−Pc=2PM−PM2−−−−−−−[22]
MATLAB代码为:
%------------------
%系统参数设置
%-----------------
T_start=0;%开始时间
T_stop=10;%截止时间
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;%码元传输速率
NumBits=T*r_s;%传输符号总数
Tb=f_sample/r_s;%符号间隔
%-------------------------------
%产生单极性码基带信号
%-------------------------------
g_T=boxcar(Tb);%发送滤波器--矩形不归零脉冲
b1=rand(1,1000);b1(b1>0.5)=1;b1(b1<=0.5)=0;%初始序列,大于0.5取1,小于0.5取0
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b1;%b1的值的赋给b2的第一行从开始到结束。
b3=reshape(b2,1,f_sample/r_s*NumBits);%reshape函数变换特定矩阵,此处是把b2转换成了一维矩阵
s=conv(b3,g_T);%发送信号
%--------------------------------
%产生噪声信号
%--------------------------------
N_0=10^(-6);
noise_w=wgn(1,length(s),N_0*f_sample,'linear');%产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。
r=s+noise_w; %r=s+n_w
figure(1)
subplot(2,1,1);
plot(s)
axis([500,800,-0.5,1.5]);
title('发送信号s(t)时域波形');
ylabel('幅度');
hold on
subplot(2,1,2);
plot(r)
axis([500,800,-0.5,1.5]);
title('加噪信号r(t)时域波形');
ylabel('幅度');
%--------------------------------
%接收信号
%--------------------------------
g_R=boxcar(Tb);%匹配滤波器--实际和发送滤波器一样,才能使误码率最小
y1=conv(r,g_R);
myeyediagram=eyediagram(y1,1*f_sample/r_s);%绘制眼图
title('眼图');
figure(3)
plot(y1)
axis([500,800,-0.5,10.5]);
title('接收信号y1(t)时域波形');
ylabel('幅度');
%设置采样序列
NumCoff=10;%采样起始位置
sample1=zeros(f_sample/r_s,NumBits);%抽样间隔为f_sample/r_s个点数
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;%得到采样序列函数
%plot(sample3)
%抽样判决
y2=y1.*sample3;%采样
y2(:,all((y2==0),1))=[];%删除y2中为0元素,返回矩阵给y2
b_t=(sign(b1)+1)*0.5;
b_r=(sign(y2)+1)*0.5;
BER=length(find(b_t~= b_r))/NumBits;
仿真效果图
误码率:
由误码率计算可以知道,在输入的噪声功率一定时,在设定参数下,大致为0.5左右,产生较大的误码率,同时有眼图可以看出判决量大致为5。
MATLAB代码:
%------------------
%系统参数设置
%-----------------
T_start=0;%开始时间
T_stop=10;%截止时间
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;%传输符号个数
NumCoff=40;%number of coefficients of RRC
%-------------------------------
%Transmitter
%-------------------------------
g_T=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%发送滤波器--升余弦滤波器
b1=sign(rand(1,NumBits)-0.5);%初始序列
%b1=randi([-1 1],1000,1);b1=b1';
b1=rand(1,1000);b1(b1>0.5)=1;b1(b1<=0.5)=-1;
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b1;%b1的值的赋给b2的第一行从开始到结束。
b3=reshape(b2,1,f_sample/r_s*NumBits);%reshape函数变换特定矩阵,此处是把b2转换成了一维矩阵
s=conv(b3,g_T);%发送信号
%--------------------------------
%AWGN channel
%--------------------------------
N_0=10^(-8);
noise_w=wgn(1,length(s),N_0*f_sample,'linear');%产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。
r=s+noise_w;
figure(1)
subplot(2,1,1);
plot(s)
axis([500,1500,-0.2,0.2]);
title('发送信号s(t)时域波形');
ylabel('幅度');
hold on
subplot(2,1,2);
plot(r)
axis([500,1500,-0.2,0.2]);
title('加噪信号r(t)时域波形');
ylabel('幅度');
%--------------------------------
%receiver
%--------------------------------(1:length(y1))
g_R=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%接收滤波器
y1=conv(r,g_R);
myeyediagram=eyediagram(y1,1*f_sample/r_s);
figure(3)
plot(y1)
axis([500,1500,-0.2,0.2]);
title('接收信号y1(t)时域波形');
ylabel('幅度');
%hold on
NumCoff=40;%number of coefficients of RRC
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
sample1=zeros(f_sample/r_s,NumBits);%抽样间隔为f_sample/r_s个点数
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;
%plot(sample3)
y2=y1.*sample3;
%plot(y2)
y2(:,all(y2==0,1))=[];
b_t=(sign(b1)+1)*0.5;
b_r=(sign(y2)+1)*0.5;
BER=length(find(b_t~= b_r))/NumBits
仿真结果
误码率
当带宽受限时系统传输的信号波形应考虑到码间干扰的问题,采用升余弦信号进行传输,由波形初步可判定解调波形与原调制波形较为相似,误差不大,再进行了误码率的计算得到的误码率较小,由于软件数据精度问题显示为零,但从眼图观察可得,误码率虽小但由于升余弦的拖尾衰减问题与引入的高斯白噪声,系统还是存在少量的误差,与4.1比较可初步得到,双极性码的最佳接收的平均无码率比单极性的小。
MATLAB 代码:
clear all;close all
%------------------
%系统参数设置
%-----------------
T_start=0;%开始时间
T_stop=10;%截止时间
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;%传输符号个数
NumCoff=40;%number of coefficients of RRC
%-------------------------------
%Transmitter
%-------------------------------
g_T=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%发送滤波器--升余弦滤波器
%b1=sign(rand(1,NumBits)-0.5);%初始序列
%b1=randi([-1 1],1000,1);b1=b1';
b=rand(1,2000);b(b>0.5)=1;b(b<=0.5)=-1;
a=b;
b_2n=a(:,2:2:end);
b_2n_1=b(:,1:2:end);
%b_2n
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b_2n;%b1的值的赋给b2的第一行从开始到结束。
b3=reshape(b2,1,f_sample/r_s*NumBits);%reshape函数变换特定矩阵,此处是把b2转换成了一维矩阵
s_2n=conv(b3,g_T);%发送信号1
fc=100;
k=0:N_sample-1+NumCoff;
c1=cos(2*pi*fc*k*T_sample);
s_2n=s_2n.*c1;
%--------------------------------
%b_2n_1
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b_2n_1;%b1的值的赋给b2的第一行从开始到结束。
b3=reshape(b2,1,f_sample/r_s*NumBits);%reshape函数变换特定矩阵,此处是把b2转换成了一维矩阵
s_2n_1=conv(b3,g_T);%发送信号1
fc=100;
k=0:N_sample-1+NumCoff;
c2=-sin(2*pi*fc*k*T_sample);
s_2n_1=s_2n_1.*c2;
%--------------------------------
s=s_2n+s_2n_1;
%AWGN channel
%--------------------------------
N_0=10^(-7);
noise_w=wgn(1,length(s),N_0*f_sample,'linear');%产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。
r=s+noise_w;
%figure(1)
%plot(s)
%hold on
%plot(r)
%--------------------------------
%receiver
%--------------------------------(1:length(y1))
g_R=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%接收滤波器
%2n
x_2n=r.*c1;
x_2n=conv(x_2n,g_R);
myeyediagram1=eyediagram(x_2n,1*f_sample/r_s);
%--------------------------------
%2n-11
x_2n_1=r.*c2;
x_2n_1=conv(x_2n_1,g_R);
myeyediagram2=eyediagram(x_2n_1,1*f_sample/r_s);
%--------------------------------
%figure(2)
%plot(y1)
%hold on
NumCoff=40;%number of coefficients of RRC
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
%2n
sample1=zeros(f_sample/r_s,NumBits);%抽样间隔为f_sample/r_s个点数
sample1(1,:)=ones(1,NumBits);
sample2=reshape(sample1,1,f_sample/r_s*NumBits);
sample3=zeros(1,length(x_2n));
sample3(NumCoff+1:NumCoff+f_sample/r_s*NumBits)=sample2;
%plot(sample3)
%2n 抽样
y_2n=x_2n.*sample3;
%y3=y2;
y_2n(:,all((y_2n==0),1))=[];%B = all(A, 1)返回一个行向量,可以认为all(A, 1)等价于all(A)
%y2=y2(1:10:end);
%y2=y2(1,:)
b_r2n(y_2n>0)=1;b_r2n(y_2n<=0)=-1;%判决并取值
%2n-1
y_2n_1=x_2n_1.*sample3;
%y3=y2;
y_2n_1(:,all((y_2n_1==0),1))=[];%B = all(A, 1)返回一个行向量,可以认为all(A, 1)等价于all(A)
%y2=y2(1:10:end);
%y2=y2(1,:)
b_r2n_1(y_2n_1>0)=1;b_r2n_1(y_2n_1<=0)=-1;%判决并取值
%b_t=(sign(b1)+1)*0.5;
%b_r=(sign(y2)+1)*0.5;
%BER=length(find(b_t~= b_r))/NumBits;
%并串转换
b_r(2,:)=b_r2n;%b1的值的赋给b2的第一行从开始到结束。
b_r(1,:)=b_r2n_1;
b_r=reshape(b_r,1,length(b));
%---------
b_t=sign(b);
BER=length(find(b_t~=b_r))/2000;
fprintf(' 误码率BER=%f',BER);
仿真结果
误码率:
QPSK经过白噪声后的最佳接收的误码率在输入噪声功率较小时,基本不存在误差,即误差很小,即使在噪声功率很大时,最后的误码率依旧很小,可以看出信道带宽受限的QPSK的传输所造成的误码率很小,系统误码性能较高。
clear all;close all
%------------------
%系统参数设置
%-----------------
T_start=0;%开始时间
T_stop=10;%截止时间
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;%传输符号个数
NumCoff=10;%number of coefficients of RRC
Tb=f_sample/r_s;
%-------------------------------
%Transmitter
%-------------------------------
g_T=boxcar(Tb);%发送滤波器--升余弦滤波器
b=rand(1,4000);b(b>0.5)=1;b(b<=0.5)=0;
a_2n=b(:,2:2:end);
a_2n_1=b(:,1:2:end);
a_2n_r1=reshape(a_2n,2,length(a_2n)/2);
a_2n_r2=reshape(a_2n_1,2,length(a_2n_1)/2);
b_r2n_1=rand(2,1000);
x2=rand(2,1000);
for i=1:1000
sym m;
m=a_2n_r1(1,i);
b_r2n_1(1,i)=m*(2.^m);
end
for i=1:1000
sym m;
m=a_2n_r1(2,i);
b_r2n_1(2,i)=m;
end
b_2n=sum(b_r2n_1);
for i=1:1000
sym m;
m=a_2n_r2(1,i);
x2(1,i)=m*(2.^m);
end
for i=1:1000
sym m;
m=a_2n_r2(2,i);
x2(2,i)=m;
end
b_2n_1=sum(x2);
b_t(2,:)=b_2n;%b1的值的赋给b2的第一行从开始到结束。
b_t(1,:)=b_2n_1;
b_t1=reshape(b_t,1,length(b)/2);
%b_2n
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b_2n;%b1的值的赋给b2的第一行从开始到结束。
b3=reshape(b2,1,f_sample/r_s*NumBits);%reshape函数变换特定矩阵,此处是把b2转换成了一维矩阵
s_2n=conv(b3,g_T);%发送信号1
fc=100;
k=0:N_sample-1+NumCoff-1;
c1=cos(2*pi*fc*k*T_sample);
s_2n=s_2n.*c1;
%--------------------------------
%b_2n_1
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b_2n_1;%b1的值的赋给b2的第一行从开始到结束。
b3=reshape(b2,1,f_sample/r_s*NumBits);%reshape函数变换特定矩阵,此处是把b2转换成了一维矩阵
s_2n_1=conv(b3,g_T);%发送信号1
fc=100;
k=0:N_sample-1+NumCoff-1;
c2=-sin(2*pi*fc*k*T_sample);
s_2n_1=s_2n_1.*c2;
%--------------------------------
s=s_2n+s_2n_1;
%AWGN channel
%--------------------------------
N_0=10^(-5);
noise_w=wgn(1,length(s),N_0*f_sample,'linear');%产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。
r=s+noise_w;
%figure(1)
%plot(s)
%hold on
%plot(r)
%--------------------------------
%receiver
%--------------------------------(1:length(y1))
g_R=boxcar(Tb);%接收滤波器
%2n
x_2n=r.*c1;
x_2n=conv(x_2n,g_R);
myeyediagram1=eyediagram(x_2n,1*f_sample/r_s);
%--------------------------------
%2n-11
x_2n_1=r.*c2;
x_2n_1=conv(x_2n_1,g_R);
myeyediagram2=eyediagram(x_2n_1,1*f_sample/r_s);
%--------------------------------
%figure(2)
%plot(y1)
%hold on
NumCoff=10;%number of coefficients of RRC
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
%2n
sample1=zeros(f_sample/r_s,NumBits);%抽样间隔为f_sample/r_s个点数
sample1(1,:)=ones(1,NumBits);
sample2=reshape(sample1,1,f_sample/r_s*NumBits);
sample3=zeros(1,length(x_2n));
sample3(NumCoff+1:NumCoff+f_sample/r_s*NumBits)=sample2;
%plot(sample3)
%2n 抽样
y_2n=x_2n.*sample3;
%y3=y2;
y_2n(:,all((y_2n==0),1))=[];%B = all(A, 1)返回一个行向量,可以认为all(A, 1)等价于all(A)
b_r2n=rand(1,1000);
for i=1:1000
sym m;
sym n;
m=y_2n(i);
if(m>11.75)
b_r2n(i)=3;
else if(m>7.5)
b_r2n(i)=2;
else if(m>2.6)
b_r2n(i)=1;
else
b_r2n(i)=0;
end
end
end
end
%2n-1
y_2n_1=x_2n_1.*sample3;
%y3=y2;
y_2n_1(:,all((y_2n_1==0),1))=[];%B = all(A, 1)返回一个行向量,可以认为all(A, 1)等价于all(A)
b_r2n_1=rand(1,1000);
for i=1:1000
sym m;
sym n;
m=y_2n_1(i);
if(m>12.5)
b_r2n_1(i)=3;
else if(m>7.5)
b_r2n_1(i)=2;
else if(m>2.5)
b_r2n_1(i)=1;
else
b_r2n_1(i)=0;
end
end
end
end
%b_t=(sign(b1)+1)*0.5;
%b_r=(sign(y2)+1)*0.5;
%BER=length(find(b_t~= b_r))/NumBits;
%并串转换
b_r(2,:)=b_r2n;%b1的值的赋给b2的第一行从开始到结束。
b_r(1,:)=b_r2n_1;
b_r=reshape(b_r,1,length(b)/2);
%---------
b_t=sign(b);
BER1=length(find(b_t1~=b_r))/2000;
fprintf('误码率=%f',BER1);
误码率:
可以看出,16QAM在最佳接收时的误码率相对都比较小,即使在噪声较大时,造成的干扰也很小,同时有眼图也可以看出,最佳判决门限每个之间相差相同的距离,也可以得到相应的星座矢量图来判断误码率。
由以上过程分析及相应的仿真模拟实现,数字信号基带传输系统的构建与传输信道的带宽有着密切的联系,当信道带宽无限时,信号传输使用的为矩形脉冲,即成型滤波器为矩形不归零脉冲,输出的信号进入信道会受到加性高斯白噪声的干扰,接收端可以采用低通滤波器与匹配滤波器,为得到最小的平均误比特率,一般采用匹配滤波器作为最佳接收,并且匹配滤波器与发送的信号相匹配(单极性),最后得到相关的解调信号。而对于信道带宽受限的情况,需要更近一步地考虑信号传输时的码间干扰,由此我们采用的是升余弦谱,即在匹配滤波器作为最佳接收的情况下,匹配滤波器的波形与成型滤波器同为根升余弦谱,可以得到最小的平均误码率。可以得到当相同的情况下,双极性不归零码的最佳接收平均误比特率比单极性的小,同时也熟悉了QPSK与16QAM信号,发现矩形星座QAM最佳接收误符率与MASK的一样,取决于数字基带MPAM的误符率,而QPSK与2PSK的输入二进制信息速率相同的情况下,二者的发送功率相同,QPSK与2PSK的平均误码率也是相同的。
同时在学习与仿真的过程中,对信号的发射接收以及匹配滤波并进行采样判决的过程有了更加深入的了解,是一次对课本知识以及自主学习能力的提升。