通信原理实验一 数字基带传输

  • 格式:doc
  • 大小:1.41 MB
  • 文档页数:26

通信原理实验一

数字基带传输

一、实验目的

1、提高独立学习的能力;

2、培养发现问题、解决问题和分析问题的能力;

3、学习Matlab 的使用;

4、掌握基带数字传输系统的仿真方法;

5、熟悉基带传输系统的基本结构;

6、掌握带限信道的仿真以及性能分析;

7、通过观测眼图和星座图判断信号的传输质量。

二、实验原理

1. 匹配滤波器和非匹配滤波器:

升余弦滚降滤波器频域特性:

将频域转化为时域

2. 最佳基带系统

将发送滤波器和接收滤波器联合设计为无码间干扰的基带系统,而且具有最佳的抗加性高斯白噪声的性能。

要求接收滤波器的频率特性与发送信号频谱共轭匹配。由于最佳基带系统的总特性是确定的,故最佳基带系统的设计归结为发送滤波器和接收滤波器特性的选择。

设信道特性理想,则有

(延时为0) 有

可选择滤波器长度使其具有线性相位。

如果基带系统为升余弦特性,则发送和接收滤波器为平方根升余弦特性。

3.基带传输系统(离散域分析)

 输入符号序列 ――

 发送信号 ―― ――比特周期,二进制码元周期

 发送滤波器 ――

 发送滤波器输出 ――

 信道输出信号或接收滤波器输入信号

(信道特性为1)

 接收滤波器 ――

 接收滤波器的输出信号

(画出眼图)

 如果位同步理想,则抽样时刻为

 抽样点数值为 (画出星座图)  判决为

其中若为最佳基带传输系统,则发送滤波器和接收滤波器都为根升余弦滤波器,当采用非匹配滤波器时,发送滤波器由升余弦滤波器基带特性实现,接收滤波器为直通。

三、实验内容

1.通过匹配滤波和非匹配滤波方式,得到不同的滚降系数下发送滤波器的时域波形和频率特性。

实验程序:

(1)非匹配情况下:

升余弦滚降滤波器的模块函数(频域到时域的转换)

function [Hf,ht]=f_unmatch(alpha,Ts,N,F0)

k=[-(N-1)/2:(N-1)/2];

f=F0/N*k;

for i=1:N;

if (abs(f(i))<=(1-alpha)/(2*Ts))

Hf(i)=Ts;

elseif(abs(f(i))<=(1+alpha)/(2*Ts))

Hf(i)=Ts/2*(1+cos(pi*Ts/alpha*(abs(f(i))-(1-alpha)/(2*Ts))));

else Hf(i)=0;

end;

end;

主函数

alpha=input('alpha=');%输入不同的滚降系数值

N=31;%序列长度

Ts=4;

F0=1;%抽样频率

n=[-(N-1)/2:(N-1)/2];

k=[-(N-1)/2:(N-1)/2];

f=F0/N*k;

Hf=zeros(1,N);

Hf=f_unmatch(alpha,Ts,N,F0);

ht=1/N*Hf*exp(j*2*pi/N*k'*n);%非匹配滤波器的时域特性

subplot(2,1,1)

stem(f,Hf,'.');

axis([-F0/2,F0/2,min(Hf)-0.2,max(Hf)+0.2]);

title('非匹配发送滤波器频率特性');

subplot(2,1,2);

stem(n,ht,'.');

axis([-(N-1)/2,(N-1)/2,min(ht)-0.2,max(ht)+0.2]);

title('非匹配发送滤波器的时域波形');

实验结果

alpha=1时

Alpha=0.5时

Alpha=0.1时

(2)匹配情况下

根升余弦滚降滤波器的模块函数(频域到时域的转换)

function [Hf,ht]=f_match(alpha,Ts,N,F0)

k=[-(N-1)/2:(N-1)/2];

f=F0*k/N;

for i=1:N;

if (abs(f(i))<=(1-alpha)/(2*Ts))

HF(i)=Ts;

elseif(abs(f(i))<=(1+alpha)/(2*Ts))

HF(i)=Ts/2*(1+cos(pi*Ts/alpha*(abs(f(i))-(1-alpha)/(2*Ts))));

else HF(i)=0;

end;

end;

n=[-(N-1)/2:(N-1)/2];

k=[-(N-1)/2:(N-1)/2];

Hf=sqrt(HF);%发送滤波器频率特性(根升余弦滚降滤波器)

ht=1/N*Hf*exp(j*2*pi/N*k'*n);%匹配滤波器的时域特性

主函数

alpha=input('alpha=');

N=31;

Ts=4;

F0=1;

n=[-(N-1)/2:(N-1)/2];

k=[-(N-1)/2:(N-1)/2]; Hf=zeros(1,N);

HF=Hf;

Hf=f_match(alpha,Ts,N,F0);

subplot(2,1,1)

stem(f,Hf,'.');

axis([-F0/2,F0/2,min(Hf)-0.2,max(Hf)+0.2]);

title('匹配发送滤波器频率特性');

subplot(2,1,2);

stem(n,ht,'.');

axis([-(N-1)/2,(N-1)/2,min(ht)-0.2,max(ht)+0.2]);

title('匹配发送滤波器的时域波形');

实验结果

Alpha=1

Alpha=0.5

Alpha=0.1

(3)由时域到频域的变化

alpha=1;

N=31;

Ts=4;

F0=1;

T0=1;

n=[-(N-1)/2:(N-1)/2];

k=[-(N-1)/2:(N-1)/2];

for n=-(N-1)/2:(N-1)/2;

t=n*T0/Ts;

y=(1-4*alpha*alpha*t*t)*(pi*t);

if(y==0)

h(n+((N-1)/2+1))=(cos(pi*t)*cos(alpha*pi*t)-alpha*pi*sin(alpha*pi*t)*sin(pi*t))/(1-12*alpha*alpha*t*t);

else

h(n+((N-1)/2+1))=sin(pi*t)/(pi*t)*cos(alpha*pi*t)/(1-4*alpha*alpha*t*t);

end;

end;

n=-(N-1)/2:(N-1)/2;

k=1:N;

f=F0*k/N; HF=h(n+((N-1)/2+1))*exp(-j*2*pi/N*k'*n);

ht=1/N*HF*exp(j*2*pi/N*k'*n);%发送滤波器时域特性

subplot(2,2,4)

stem(f,HF,'.');

axis([0,F0,min(HF)-0.2,max(HF)+0.2]);

xlabel('f'),ylabel('HF');

title('alpha=1的非匹配发送滤波器频率特性');

subplot(2,2,3);

stem(n,ht,'.');

axis([-(N-1)/2,(N-1)/2,min(ht)-0.2,max(ht)+0.2]);

xlabel('n'),ylabel('ht'),title('alpha=1的非匹配发送滤波器的时域波形');

Hf=sqrt(HF);%发送滤波器频率特性(根升余弦滚降滤波器)

ht=1/N*Hf*exp(j*2*pi/N*k'*n);%发送滤波器时域特性

subplot(2,2,2)

stem(f,Hf,'.');

axis([0,F0,min(Hf)-0.2,max(Hf)+0.2]);

xlabel('f'),ylabel('Hf');

title('alpha=1的匹配发送滤波器频率特性');

subplot(2,2,1);

stem(n,ht,'.');

axis([-(N-1)/2,(N-1)/2,min(ht)-0.2,max(ht)+0.2]);

xlabel('n'),ylabel('ht'),title('alpha=1的匹配发送滤波器的时域波形');

实验结果

2.输入信号叠加噪声,通过匹配和非匹配滤波两种方式,再经过抽样判决得到输出序列。

(1)匹配滤波形式

M=8;%符号数

N=32;%抽样点数

L=4;

T0=1;Ts=L*T0;

Rs=1/Ts;

fs=1/T0;%抽样频率

Bs=fs/2;%折叠频率

T=N/fs;

t=-T/2+[0:N-1]/fs;

f=-Bs+[0:N-1]/T;

%产生随机的序列输入

y=rand(1,M);

x0=zeros(1,M);

for i=1:M

if y(i)>0.5

x0(i)=1;

else

x0(i)=-1;

end

end

subplot(5,2,1),stem(x0,'b.');

title('输入符号序列');

%在两个序列间插入三个零得到发送信号

n=0:L*M-1;

x1=zeros(1,L*M);

for i=1:M

x1(L*(i-1)+1)=x0(i);

end

subplot(5,2,2);stem(n,x1,'.');

title('发送信号');

%根升余弦的发送滤波器

alpha=1;

n=[-(N-1)/2:(N-1)/2];

k=[-(N-1)/2:(N-1)/2];

Hf=zeros(1,N);

HF=Hf;

k=[-(N-1)/2:(N-1)/2];

f=k/N;

for i=1:N;

if (abs(f(i))<=(1-alpha)/(2*Ts))

HF(i)=Ts;