数字基带传输系统--matlab实现,附源码

目录

    • 一. 数字基带传输系统原理
      • 1. 带限信道的基带系统模型(连续域分析)
      • 2. 升余弦滚降滤波器
      • 3. 最佳基带系统
    • 二.发送滤波器设计
      • 1.滤波器的设计
      • 2. 频率抽样法设计非匹配形式的基带系统的发送滤波器(平方根升余弦滤波器)
      • 2.问题
    • 三.基带系统软件设计
      • 1.设计思路
      • 2.子函数编写
    • 四.基带系统仿真与性能测试
      • 1.系统主函数设计思路
      • 2.仿真与测试
    • 五.总结
      • 1.问题
      • 2.对于理论的理解
      • 3.感悟

本文旨在记录自己的一次非常用心的课程作业,以及和大家分享研究成果,喜欢的别忘了点一个赞哦~~~

一. 数字基带传输系统原理

1. 带限信道的基带系统模型(连续域分析)

带限信道下的基带系统模型如图 2 所示,有关信号传输过程如下:

数字基带传输系统--matlab实现,附源码_第1张图片

图 1 带限信道下的基带系统模型

信道信号形成器: 基带传输系统的输入是由终端设备或编码器产生的脉冲序列,它不一定适合直接在信道中传输。信道信号形成器的作用就是把原始基带信号变换成适合于信道传输的基带信号,这种变换主要是通过码型变换和波形变换来实现的,其目的是与信道匹配,便于传输,减小码间串扰,利于同步提取和抽样判决。

信道: 允许基带信号通过的媒质。信道的传输特性通常不满足无失真传输条件,恒参信道如(明线、同轴电缆、对称电缆、光纤通道、无线电视距中继、卫星中继信道)对信号传输的影响主要是线形畸变;随参信道如(短波电离层反射、对流层散射信道等)对信号传输的影响主要有频率弥散现象(多径传播)、频率的选择性衰落。信道的线性噪声和加性噪声的影响。在通信系统的分析中,常常把噪声n(t)等效,集中在信道中引入。

接收滤波器: 主要作用是滤除带外噪声,对信道特性均衡,使输出的基带波形有利于抽样判决。

抽样判决器: 它是在传输特性不理想及噪声背景下,在由位定时脉冲控制的特殊点对接收滤波器的输出波形进行抽样判决,以恢复或再生基带信号。

2. 升余弦滚降滤波器

升余弦滤波器的频率响应为
在这里插入图片描述
1.升余弦滚降滤波器本质上只是一个低通滤波器,只不过它的滚降因子(rolloff effect)会对波形的幅度产生一定影响,一般是降低了波形的幅度并且低通

2.升余弦滚降信号用来消除码间串扰,实际实现时采用的方式是由发送端的基带成行滤波器和接收端的匹配滤波器两个环节公共实现。传输系统的传递函数二者的乘 积,所以每个环节均为平方根升余弦滚降滤波器。

3. 最佳基带系统

为了让发送滤波器的接受滤波器形成计为无码间干扰的基带系统,并且可以很好的抵抗加性高斯白噪声的影响,需要接收滤波器的频率特性与发送信号频谱共轭匹配。

基带系统传输特性设计可以采用两种方式,一种是采用匹配滤波器来形成无码间干扰的系统,发送滤波器和接收滤波器对称的系统,发送滤波器和接收滤波器都是升余弦平方根特性;另一种是不采用匹配滤波器方式,升余弦滚降基带特性完全由发送滤波器实现,接收滤波器为直通系统

二.发送滤波器设计

1.滤波器的设计

  1. 窗函数法设计匹配形式的基带系统的发送滤波器

(1)思路: 在命令行输入值赋值给a滚降因子,利用理想平方根升余弦滚降滤波器时域单位冲击响应hn,升余弦滚降滤波器中间点的校正再用布莱克曼窗wn进行截断,即进行卷积hn*wn,得到发送滤波器的时域表达式,作512点的快速傅里叶变换hw=fft(h,512);可以得到频域表达式,代入计算增益的表达式可以求增益.绘图时用abs函数求幅值。
(2)程序如下:

function h=matched(a,N,Tc);%创建匹配的发送滤波器
n=-16:16;%n的范围
a=input('alpha=');%在命令行输入值赋值给a
Tc=4;
hn=(sin((1-a)*pi*n/Tc)+4*a*n/Tc.*cos((a+1)*pi*n/Tc))./(pi*n/Tc)./(1-16*a*a*n.*n/Tc/Tc);%平方根升余弦滚降滤波器时域单位冲击响应

hn(17)=1;%升余弦滚降滤波器中间点的校正
n=0:32;
wn=0.42-0.5.*cos(2.*pi.*n./(max(n)-1))+0.08.*cos(4.*pi.*n./(max(n)-1));
%布拉克曼窗表达式
h=hn.*wn;%加窗后的升余弦滚降滤波器
nh=0:33;
hw=fft(h,512);%频率特性
plot(abs(hw));
g=max(hw);
H=max(abs(hw)); 

数字基带传输系统--matlab实现,附源码_第2张图片

流程图 1 窗函数法设计滤波器

(3)输出图像

Alpha=0.2
数字基带传输系统--matlab实现,附源码_第3张图片
数字基带传输系统--matlab实现,附源码_第4张图片
图 2 窗函数法设计发送滤波器

2. 频率抽样法设计非匹配形式的基带系统的发送滤波器(平方根升余弦滤波器)

(1)**思路:**先写子函数f_sampling(N,Tc,fs),给K和N取值范围,对频率f进行抽样,再在主函数里对其调用[hn,Hf,f]=f_sampling(33,4,1)。设计零值序列Hf=zeros(1,N),用if对Hf进行分段赋值。若abs(f(i))<=f1则赋值Tc给Hf(i),若(abs(f(i))<=f2)则令若都不是,则 Hf(i)=0再对Hf进行DFS变换得到频率响应。最后在主函数中调用子函数,输出相关图像。
(2)程序如下:

%子函数
function [hn,Hf,f]=f_sampling(N,Tc,fs)
alpha=0.4;
K=[-(N-1)/2:(N-1)/2];
n=[-(N-1)/2:(N-1)/2]; 
f=K*fs/N;%频率抽样
f1=(1-alpha)/(2*Tc);
f2=(1+alpha)/(2*Tc);
Hf=zeros(1,N);  %升余弦滚降滤波器频率响应抽样函数
for i=1:N
    if(abs(f(i))<=f1)
            Hf(i)=Tc;
    elseif(abs(f(i))<=f2)                
            Hf(i)=Tc/2*(1+cos(pi*Tc/alpha*(abs(f(i))-(1-alpha)/(2*Tc))));
    else Hf(i)=0;    
    end;
end;

hn=1/N*Hf*exp(j*2*pi/N*K'*n);%进行DFS,周期序列的傅里叶级数
%主函数
function [hn]=f_samp_um(N,Tc,fs)
alpha=input('alpha=');  %输入不同的alpha值
[hn,Hf,f]=f_sampling(33,4,1);
[Hw,w]=freqz(hn);%求离散系统频响特性
H=max(abs(Hw));%幅频的最大值 

数字基带传输系统--matlab实现,附源码_第5张图片
流程图 2 频率抽样法设计发送滤波器

(3)相关图像

Alpha=0.2
数字基带传输系统--matlab实现,附源码_第6张图片
数字基带传输系统--matlab实现,附源码_第7张图片 数字基带传输系统--matlab实现,附源码_第8张图片图 3 频率抽样法设计发送滤波器

  1. 滤波器函数的文件格式存储
    思路: 用fopen,fwrite,fread函数进行操作,采取不同的操作符w表写,r表读

截图:使用二进制形式生成.bin
在这里插入图片描述
数字基带传输系统--matlab实现,附源码_第9张图片图4 生成.bin生成.txt文件 图5

生成.txt
在这里插入图片描述
数字基带传输系统--matlab实现,附源码_第10张图片

2.问题

(1)滤波器的群延时是多少

τ= (N-1)/2 = (33-1)/2 = 16

(2)改变滤波器的滚降系数,滤波器的第一零点带宽和第一旁瓣衰减指标有何变化?列表说明。

数字基带传输系统--matlab实现,附源码_第11张图片

表1 窗函数法
数字基带传输系统--matlab实现,附源码_第12张图片
表2 频率抽样法

(3)根据 1)2),改变滚降系数,从时域和频域进行对比分析,总结两种发送滤波器的特点

窗函数滤波器: 随着滚降因子不断增加,第一零点带宽并不成正比变化且变化幅度很小,阻带最小衰减减小,幅频特性中阻带变得更加平坦。时域图像幅度减小,窗函数滤波器有原有公式可以参考,且随滚降因子变化。

频率滤波器: 随着滚降因子不断增加,第一零点带宽增加,阻带最小衰减增加,时域和频域变化不特别明显,有增大。所以频率滤波器设计简单,但是随滚降因子变化小。

三.基带系统软件设计

1.设计思路

1.(根据数字基带系统的框图编写子程序,在按照要求进行调用)

(1)调用random函数生成长度为L的,范围为0到1的序列,再以0.5为界判0或1;
(2) 令A为一个周期内的抽样点数,L为信号长度,X1为前一步生成的0-1序列,在X1的序列的每个码元中间插入A-1零点,使得得到的X2序列每个码元间隔为A,即生成信源序;
(3)信源卷积发送滤波器,即将X2序列与发送滤波器相卷积,得到的X3为在信道中传输的序列;
(4)白噪声为随机序列,可用random生成,且功率为N0,由此得到高斯白噪声;
(5)白噪声与信号相加后通过接收滤波器,re是通过的信号;
(6)将码间间隔为A的0-1序列恢复成间隔为1的序列;
(7)对得到的序列进行判决,大于0.5判1,小于判0;
(8)画出眼图;
(9)将判决后的序列与发送的序列比较得到误码率
2.(根据题目要求按照顺序对子函数进行调用)

2.子函数编写

1.二进制信源生成

函数名:function[x1]=random(L) m=rand(1,L);

思路:调用rand函数生成产生1行L列的随机序列,范围为0到1的序列,再以0.5为界判-1或1; 再用x1=zeros(1,L)生成一个0序列。通过if判断随机序列若小于0.5则x1(i)=-1,否则x1(i)=1;

程序如下:

function[x1]=random(L) m=rand(1,L);
x1=zeros(1,L);  
for i=1:L     
if m(i)<0.5x1(i)=-1;   
else  x1(i)=1

2.发送信号生成

函数名:function [x2]=source(L,A,x1)x2=zeros(1,A*L);

思路:在二进制信源序列中插入零点,间隔为A,生成发送信

程序如下:

function [x2]=source(L,A,x1)x2=zeros(1,A*L);
for i=1:L   
x2(A*(i-1)+1)=x1(i);   %在二进制信源序列中插入零点,间隔为A,生成发送信号

3.发送滤波器器输出信号生成和计算每比特平均能量

函数名:function [x3]=send(hn,x2,L,A,N) x3=conv(x2,hn);

思路:将发送信号和方式滤波器通过conv函数卷积,并且截去因为卷积增加的点

程序如下:

function [x3]=send(hn,x2,L,A,N) x3=conv(x2,hn);     %发送信号与发送滤波器卷积
x3=x3((N+1)/2:(N+1)/2-1+L*A);    %截去由于卷积新增的(N-1)个点

4.给定信噪比SNR(dB),计算高斯噪声标准方差,并生成高斯噪声序列

函数名:function [noi]=noise(SNR,L,A,x3)

思路:先赋值Eb为0,再通过for循环逐个,将每个比特由abs求得幅值,对其取平方,叠加得总能量,最后除以最点数求得平均能量。由sqrt求得标准差,和返回1*(A*L)的随机矩阵的randn相乘,得到高斯噪声序列。再产生

程序如下:

function [noi]=noise(SNR,L,A,x3)Eb=0;
for i=1:A*L
      Eb=Eb+(abs(x3(i)))^2;
      Eb=Eb/L;
     
sigma=sqrt(N0/2);      
noi=0+sigma*randn(1,A*L);   

5.AWGN信道输出子函数和接收滤波器输出信号生成

函数名:function [x4]=receive(x3,noi,hn,N,L,A)

思路:将发送滤波器输出信号和噪声序列相加,再和接受滤波器通过conv卷积,最后还要截去多余的N-1个点

程序如下:

function[x4]=receive(x3,noi,hn,N,L,A)re=noi+x3;       
x4=conv(re,hn);
x4=x4((N+1)/2:(N+1)/2-1+L*A);  

6. 抽样

函数名:function [x5]=sample(L,A,x4)x5=zeros(1,L);

思路:先产生一个zeros(1,L)的1行L列的零序列x5,再将接受滤波器输出序列x4每隔A进行抽样,对每个x4(i)乘以A赋给 x5(i),则得到一组L个序列。

程序如下:

function [x5]=sample(L,A,x4)x5=zeros(1,L);
for i=1:L
   x5(i)=real(x4((i-1)*A+1)); 

7.抽样判决点信号生成

函数名:先产生一个zeros(1,L)的1行L列的零序列x6,再通过for循环对每个x5的元素进行判决,如果大于0.5则判决x6(i)=1,否则判决x6(i)为-1

思路:

程序如下:

function [x6]=judge(L,x5)x6=zeros(1,L);
    for i=1:L 
        if x5(i)>0.5
            x6(i)=1;
         else x6(i)=-1;end;end;

8.眼图

函数名:function [x7]=eyepattern(A,L,x4)x7=0;

思路:进行双层循环,通过i的循环,再通过j的循环,每隔一定数量的码元截取一段,将信号进行截断和叠加,最后直接在原函数中输出眼图,而且使用hold on;将每次的图形进行叠加。

程序如下:

function [x7]=eyepattern(A,L,x4)x7=0;

for i=1:(8*A):(A*L)
for j=1:(8*A)
        x7(j)=x4(i+j-1);

figure(2); plot(x7,'k');title('眼图');hold on;

9.误比特率计算子函数

函数名:function [Pe]=errorrate(L,x1,x6)

思路:通过for循环,依次判断得到的信号和原信号是否相等,如果不相等则累加一,最后将误码数除以总数得到误码率。通过sprintf函数在命令窗口输出误码率。

程序如下:

 function [Pe]=errorrate(L,x1,x6)
   BE=0;
   for i=1:L
   if x1(i)~=x6(i)
               BE=BE+1;
    Pe=BE/L;
sprintf('误码率: ',Pe*100)

10.星座图

函数名:function [x8,x9]=stars(L,x5,x1)

思路:先赋值 j = 1;k = 1,通过for循环依次判断,将在原信号为1时对应的接收信号放入x8序列,对j累加,该序列应该在1处分布。将在原信号为-1时对应的接收信号放入x9序列,对k累加,该序列应该在-1处分布。使用plot函数一次性对图像输出,将横坐标为x8,纵坐标为长度为length(x8)的零序列,颜色为红色,同理可以得到x9的星座图。

程序如下:

function [x8,x9]=stars(L,x5,x1) 
j = 1;k = 1;
   for i=1:L
     if x1(i) == 1     
            x8(j)=x5(i);      
                j = j+1; else
            x9(k)=x5(i);       
                k = k+1;
plot(x8,zeros(1,length(x8)),'.b',x9,zeros(1,length(x9)),'.r');
%或者plot(x8,zeros(1,length(x8)),'.b');hold on;plot(x9,zeros(1,length(x9)),'.r');
end

四.基带系统仿真与性能测试

1.系统主函数设计思路

主要思路如下,若系统采用匹配滤波器则将滤波器换作matched函数,如果需要噪声在接受滤波器之前加入即可。最后根据每个题的情况设置不同的参数。
数字基带传输系统--matlab实现,附源码_第13张图片

流程图 3 基带系统仿真

2.仿真与测试

1.假设加性噪声不存在,传输比特速率是Rb =1/Tc的240个二进制比特,比特间隔为Tb =4T,基带系统采用非匹配滤波器,画出接受滤波器的输出信号波形和眼图,并判断有无码间干扰。误码率:7.92%
数字基带传输系统--matlab实现,附源码_第14张图片数字基带传输系统--matlab实现,附源码_第15张图片
图 4 基带系统仿真误码率由命令窗口给出为7.92%,得到传输信号,观察眼图可知正常张开所以没有码间干扰。

  1. 假设加性噪声不存在,传输 240 个二进制比特,基带系统不采用匹配滤波器,比特间隔为Tb=3T,Tb=5T,Tb=8T,画出接收滤波器的输出信号波形和眼图,判断有无码间干扰。从理论方面解释实验现象。抽样后进行判决,计算误比特率。
    数字基带传输系统--matlab实现,附源码_第16张图片数字基带传输系统--matlab实现,附源码_第17张图片

表3 眼图分析

总结: 由于设计为理想系统,故可以达到0误码率,但是在现实中很难存在。还可知4T和8T时没有码间干扰,但是3T和5T则有码间干扰,说明比特间隔为无码间干扰整数倍的情况下,输出依旧无码间干扰,否则有码间干扰,并且眼图睁眼不大。

  1. 传输240个二进制比特,比特速率Rb =1/Tc,信噪比分别取1dB, 5dB,10dB,20dB,时,基带系统分别为匹配滤波器形式和非匹配滤波器形式、滚降系数为 0.35,得到相应的恢复数字信息序列。
    数字基带传输系统--matlab实现,附源码_第18张图片
    数字基带传输系统--matlab实现,附源码_第19张图片

由图知,
(1)信噪比越大,误码率越小,星座图越集中,传输质量也就越高;
(2) 眼图眼睛张开越大信息传输质量越高;
(3) 采用匹配滤波器的误码率比采用非匹配的小,且数据更集中

五.总结

1.问题

  1. 信源不能直接由random得到,原因是每个信号间应该有A=4的码元间隔,因此应该插入三个零点,同理,在接收端判决前,应该去掉加上的三个零点。
    数字基带传输系统--matlab实现,附源码_第20张图片数字基带传输系统--matlab实现,附源码_第21张图片
    图9 发送信号前后对比

  2. 在通过发送滤波器后,由于进行了卷积,点数变为240*4+33=993个点,故应去掉多余的33个点,通过接收滤波器同理。
    数字基带传输系统--matlab实现,附源码_第22张图片数字基带传输系统--matlab实现,附源码_第23张图片
    图10 滤波器前后对比

  3. 设置星座图时刚开始使用scatterplot函数,但是无法将信号分为两组数据.之后重新构造 function [x8,x9]=stars(L,x5,x1),将原信号为1时对应的接收信号组成一个序列,将原信号为-1时对应的接收信号组成一个序列,然后使用以下语句,在一个图里输出星座图
    plot(x8,zeros(1,length(x8)),’.b’,x9,zeros(1,length(x9)),’.r’);
    数字基带传输系统--matlab实现,附源码_第24张图片数字基带传输系统--matlab实现,附源码_第25张图片
    图11 星座图前后对比

2.对于理论的理解

这次试验中,通过查阅通信原理以及数字信号处理,参考网上的资料,让我系统的复习了上学期所学的通信原理,并对数字基带传输系统有了更充分的认识,使我更加孰料的掌握了matlab的使用。

我也更深刻地明白了在数字传输系统中所传输的通常是二元数字信号。设计数字传输系统要考虑的基本想法是选择一组有限个离散的波形来表示数字信息。这些离散波形可以是载波进行调制后的波形,也可以是不经过调制的不同电平信号。来自数据终端的原始数据信号,或者是来自模拟信号经数字化处理后的PCM码组,ΔM序列等等都是基带数字信号。 这些信号往往包含丰富的低频分量。有些场合可以不经过载波调制和解调过程而直接传输,称为基带传输。

系统基带波形被脉冲变换器变换成适应信道传输的码型后,就送入信道,一方面受到信道特性的影响,使信号产生畸变;另一方面信号被信道中的加性噪声所叠加,造成信号的随即畸变。因此,在接收端必须有一个接收滤波器,使噪声尽可能受到抑制,为了提高系统的可靠性,在安排一个有限整形器和抽样判决器组成的识别电路,进一步排除噪声干扰和提取有用信号。对于抽样判决,必须有同步信号提取电路。在基带传输中,主要采用位同步。同步信号的提取方式采用自同步方式(直接法)。同步系统性能的好坏将直接影响通信质量的好坏,甚至会影响通信能否正常进行。

3.感悟

1、 这次实验工作量比较大,而且很多matlab函数不熟悉,经过各种查资料、请教同学,才最终完成。遇到的最大困难是编程有错误还老是查不出来,以后要多熟悉熟悉matlab函数,减少在编程上的困难。这次实验收获良多,学会了不少东西,相信下次实验会轻松不少。

2、这次实验开始总是仿真不到需要的图形,理论和仿真差距很大。后来通过交流,修改了程序,改变一些变量,才最终仿真出一些比较满意的结果。

3、最大的收获是一定要冷静,保持平常心,尤其是在调试程序时,要稳重,忌焦忌燥,否则会越来越麻烦。

都看到这里了不如点个赞哦~

数字基带传输系统--matlab实现,附源码_第26张图片

你可能感兴趣的:(数字通信系统设计)