通信原理实验报告含MATLAB程序文件.docx
《通信原理实验报告含MATLAB程序文件.docx》由会员分享,可在线阅读,更多相关《通信原理实验报告含MATLAB程序文件.docx(41页珍藏版)》请在冰豆网上搜索。
通信原理实验报告含MATLAB程序文件
通信原理实验报告
实验一数字基带传输实验
一、实验目的
1、提高独立学习的能力;
2、培养发现问题、解决问题和分析问题的能力;
3、学习Matlab的使用;
4、掌握基带数字传输系统的仿真方法;
5、熟悉基带传输系统的基本结构;
6、掌握带限信道的仿真以及性能分析;
7、通过观测眼图和星座图判断信号的传输质量。
二、实验原理
1.带限信道的基带系统模型(连续域分析)
输入符号序列————{al}
发送信号————
Tb是比特周期,二进制码元周期
发送滤波器————GT(w)或GT(t)
发送滤波器输出————
信道输出信号或接收滤波器输入信号
接收滤波器
或
接收滤波器输出信号
其中
如果位同步理想,则抽样时刻为
判决为
2.升余弦滚降滤波器
;
式中α称为滚降系数,取值为0<α≤1,Ts是常数。
α=0时,带宽为1/2TsHz;α=1时,
带宽为1/TsHz。
此频率特性在(−1/(2Ts),1/(2Ts))内可以叠加成一条直线,故系统无码间干
扰传输的最小符号间隔为Tss,或无码间干扰传输的最大符号速率为1/TsBaud。
相应的时
域波形h(t)为
此信号满足
在理想信道中,C(w)=1,上述信号波形在抽样时刻上没有码间干扰,如果传输码元速率满足
,则通过此基带系统后无码间干扰。
3.最佳基带系统
将发送滤波器和接收滤波器联合设计为无码间干扰的基带系统,而且具有最佳的抗加
性高斯白噪声的性能。
要求接收滤波器的频率特性与发送信号频谱共轭匹配。
由于最佳基带系统的总特性是
确定的,故最佳基带系统的设计归结为发送滤波器和接收滤波器特性的选择。
设信道特性理想,则有
H(f)=GT(f)⋅GR(f)
GR(f)=G*T(f)(延时为0)
有GT(f)=GR(f)=H(f)1/2
可选择滤波器长度使其具有线性相位。
如果基带系统为升余弦特性,则发送和接收滤波器为平方根升余弦特性。
4.由模拟滤波器设计数字滤波器的时域冲激响应
升余弦滤波器(或平方根升余弦滤波器)的最大带宽为1/Ts,故其时域抽样速率至少
为2/Ts,取F0=1/T0=4/Ts,其中T0为时域抽样间隔,归一化为1。
抽样后,系统的频率特性是以F0为周期的,折叠频率为F02=2Ts。
故在一个周期
内以间隔Δf=F0/N抽样,N为抽样个数。
频率抽样为H(kΔf),
k=0,±1,…,±(N−1)/2。
相应的离散系统的冲激响应为
将上述信号移位,可得具有线性相位的因果系统的冲激响应。
5.基带传输系统(离散域分析)
输入符号序列————
发送信号————
比特周期,二进制码元周期
发送滤波器
或
发送滤波器输出
信道输出信号或接收滤波器输入信号
接收滤波器
或
接收滤波器的输出信号
如果位同步理想,则抽样时刻为
抽样点数值
判决为
6.编程思想
编程尽量采用模块化结构或子函数形式,合理设计各子函数的输入和输出参数。
系统
模块或子函数可参考如下:
信源模块
发送滤波器模块(频域特性和时域特性)
加性白噪声信道模块
接收滤波器模块(频域特性和时域特性)
判决模块
采用匹配滤波器的基带系统模块
不采用匹配滤波器的基带系统模块
画眼图模块
画星座图模块
三、实验内容
1、如发送滤波器长度为N=31,时域抽样频率F0为s4/T,滚降系数分别取为0.1、0.5、1,
计算并画出此发送滤波器的时域波形和频率特性,计算第一零点带宽和第一旁瓣衰减。
以
此发送滤波器构成最佳基带系统,计算并画出接收滤波器的输出信号波形和整个基带系统
的频率特性,计算第一零点带宽和第一旁瓣衰减。
按题目要求编写程序如下:
(1)子程序如下:
余弦滚降子函数定义:
functiony=upcos(f,alpha,Ts)
if(abs(f)<=(1-alpha)/(2*Ts))
y=Ts;
elseif(abs(f)>=(1+alpha)/(2*Ts))
y=0;
else
y=Ts/2*(1+cos(pi*Ts/alpha*(abs(f)-(1-alpha)/(2*Ts))));
end
idft子函数定义:
functionxn=idft(Xk,N)
k=0:
(N-1);
n=0:
(N-1);
wn=exp(-j*2*pi/N);
nk=n'*k;
wnnk=wn.^(-nk);
xn=(Xk*wnnk)/N;
(2)主函数如下:
Ts=4;T0=1;
N=31;
a=1;
f=(-2/Ts):
(4/Ts)/(N-1):
(2/Ts);
foralpha=[0.1,0.5,1]
fori=1:
N
H(i)=upcos(f(i),alpha,Ts);
end
H_k(a,:
)=H;
fori=1:
N
upcosHk(i)=upcos(f(i),alpha,Ts);
end
fori=1:
(N+1)/2
temp(i)=H_k(a,i);
end
fori=1:
(N-1)/2
H_k(a,i)=H_k(a,i+(N+1)/2);
end
fori=1:
(N+1)/2
H_k(a,i+(N-1)/2)=temp(i);
end
subplot(3,1,a);
stem(H_k(a,:
),'.');title('频域波形');
a=a+1;
end;
figure
fora=1:
3
h_n(a,:
)=idft(H_k(a,:
),N);
fori=1:
(N+1)/2%时域搬移非因果=>因果
temp(i)=h_n(a,i);
end
fori=1:
(N-1)/2
h_n(a,i)=h_n(a,i+(N+1)/2);
end
fori=1:
(N+1)/2
h_n(a,i+(N-1)/2)=temp(i);
end
subplot(3,1,a);
stem(real(h_n(a,:
)),'.');title('时域波形');
end
figure
fora=1:
3
subplot(3,1,a);
[H_w1,w]=freqz((h_n(a,:
)),1);
stem(w,abs(H_w1),'.');title('升余弦滤波器')
H_w(a,:
)=H_w1';
end;
figure;
fora=1:
3
sqrH_k(a,:
)=sqrt(abs(H_k(a,:
)));%升余弦平方根特性
sqrh_n(a,:
)=idft(sqrH_k(a,:
),N);
fori=1:
(N+1)/2%时域搬移
temp(i)=sqrh_n(a,i);
end
fori=1:
(N-1)/2
sqrh_n(a,i)=sqrh_n(a,i+(N+1)/2);
end
fori=1:
(N+1)/2
sqrh_n(a,i+(N-1)/2)=temp(i);
end
sumsqrh(a,:
)=conv((sqrh_n(a,:
)),(sqrh_n(a,:
)))
end
fora=1:
3
subplot(3,2,2*a-1);
stem(real(sqrh_n(a,:
)),'.');
subplot(3,2,2*a);
stem(real(sumsqrh(a,:
)),'.')
end
figure
fora=1:
3
[sumH_w1,w]=freqz((sumsqrh(a,:
)),1);
sumH_w(a,:
)=sumH_w1';
subplot(3,1,a);
stem(w,abs(sumH_w1),'.');title('匹配滤波器频率特性');
end
实验所出波形如下:
图一为余弦滚降滤波器在不同α值时的系统频域特性,其中从上到下α值依次为0.1,0.5,0.999(0.999而非1的原因在最后一部分经验与收获中解释)
图二为相应升余弦特性经过idft后的时域波形,可见α值越大,时域主瓣宽度越窄,旁瓣衰减越剧烈,相应的,在时域抽样判决时,在定时不够精确时,大α值就能减小码间串扰。
但在本实验中,由于抽样点精确定在最佳抽样点处,所以α值对误码率影响不大。
图三为调用freqz由时域波形得到的频域波形,由此图可计算频域主瓣宽度和旁瓣衰减。
图四为右侧两图为升余弦平方根特性的时域波形,由于匹配滤波器接收与发送滤波器皆为升余弦平方根特性,串接后总特性为两时域波形卷积,总特性时域波形如右图。
信号经过发送滤波器后的波形即为以上信号时移叠加。
图五为匹配滤波器总特性的时域波形使用freqz函数后导出的频域特性。
将图三与图五进行比较,以第一行为例:
非匹配:
匹配:
可见匹配滤波器在旁瓣抑制方面明显强于非匹配滤波器。
2、根据基带系统模型,编写程序,设计无码间干扰的二进制数字基带传输系统。
要求要
传输的二进制比特个数、比特速率Rb(可用与Ts的关系表示)、信噪比SNR、滚降系数α
是可变的。
1)生成一个0、1等概率分布的二进制信源序列(伪随机序列)。
可用MATLAB中的
rand函数生成一组0~1之间均匀分布的随机序列,如产生的随机数在(0,0.5)区间内,
则为0;如果在(0.5,1)区间内,则为1。
2)基带系统传输特性设计。
可以采用两种方式,一种是将系统设计成最佳的无码间干
扰的系统,即采用匹配滤波器,发送滤波器和接收滤波器对称的系统,发送滤波器和接收
滤波器都是升余弦平方根特性;另一种是不采用匹配滤波器方式,升余弦滚降基带特性完
全由发送滤波器实现,接收滤波器为直通。
3)产生一定方差的高斯分布的随机数,作为噪声序列,叠加到发送滤波器的输出信
号上引入噪声。
注意噪声功率(方差)与信噪比的关系。
信道高斯噪声的方差为σ2,单
边功率谱密度2
N0=2σ,如计算出的平均比特能量为Eb,则信噪比为
SNR=10⋅log10(Eb/N0)。
4)根据接收滤波器的输出信号,设定判决电平,在位同步理想情况下,抽样判决后
得到接收到的数字信息序列波形。
所编程序如下:
(1)子程序如下:
产生双极性信号子序列:
function[source,Eb]=subserial(N)
source=zeros(1,N);
Eb=0;
fori=1:
N;
temp=rand;
if(temp<0.5)
source(i)=-1;
else
source(i)=1;
end
Eb=Eb+source(i)*source(i);
end
Eb=Eb/N;
i=1:
N;
figure;stem(i,source,'.');
title('信源序列');
序列拓展子函数:
function[out]=sigexpand(d,M)
%求输入序列扩展为间隔为M-1个0的序列
N=length(d);
out=zeros(M,N);
out(1,:
)=d;%d赋值给第一行
out=reshape(out,1,M*N);
余弦滚降函数定义子函数:
functiony=upcos(f,alpha,Ts)
if(abs(f)<=(1-alpha)/(2*Ts))
y=Ts;
elseif(abs(f)>=(1+alpha)/(2*Ts))
y=0;
else
y=Ts/2*(1+cos(pi*Ts/alpha*(abs(f)-(1-alpha)/(2*Ts))));
end
idft子函数:
functionxn=idft(Xk,N)
k=0:
(N-1);
n=0:
(N-1);
wn=exp(-j*2*pi/N);
nk=n'*k;
wnnk=wn.^(-nk);
xn=(Xk*wnnk)/N;
stem(n,real(xn),'*');
高斯白噪声产生子函数:
function[gsrv1,gsrv2]=gnguass(m,sgma)
ifnargin==0
m=0;
sgma=1;
elseifnargin==1
sgma=m;
m=0;
end
u=rand;
z=sgma*sqrt(2*log10(1/(1-u)));
u=rand;
gsrv1=m+z*cos(2*pi*u);
gsrv2=m+z*sin(2*pi*u);
判决模块子函数:
function[resul]=panjue(subresul,Ts,N)
%抽样判决
%N为源序列有效符号数
fori=1:
Ts:
(N-1)*Ts+1;
if(real(subresul(i))>=0)
resul(i)=1;
elseresul(i)=-1;
end
end
统计错误子函数:
function[num,prop]=erro(sourc,resul,Ts,N);
%统计码元中错误数num与误码率prop
num=0;
fori=1:
Ts:
(N-1)*Ts+1
if(sourc(i)==resul(i))
num=num;
else
num=num+1;
end
end
prop=num/N;
画眼图子函数:
function[]=yantu(b,Ts)
N=length(b);
forn=1:
ceil(N/Ts-1)
fori=1:
Ts+1
c(i)=b((n-1)*Ts+i);
end
i=1:
Ts+1;
tt=1:
0.1:
Ts+1;
yy=spline(i,c,tt);
plot(tt,yy);
holdon;
end
(2)主函数程序:
Ts=4;T0=1;%input('码元速率=')
alpha=0.1;%input('滚降系数=')
M=100;%input('源序列长度=')
SNR=10;%input('信噪比=')
N=31;%滤波器阶数
[subsourc,Eb]=subserial(M);
sourc=sigexpand(subsourc,Ts);%序列扩展
N0=Eb/(10^(SNR/10));
sigma=sqrt(N0/2);%计算sigma
f=(-2/Ts):
(4/Ts)/(N-1):
(2/Ts);
fori=1:
N
upcosHk(i)=upcos(f(i),alpha,Ts);
end
fori=1:
(N+1)/2
temp(i)=upcosHk(i);
end
fori=1:
(N-1)/2
upcosHk(i)=upcosHk(i+(N+1)/2);
end
fori=1:
(N+1)/2
upcosHk(i+(N-1)/2)=temp(i);
end
figure;
subplot(2,2,1);
stem(upcosHk,'.');
subplot(2,2,2);
h_n=idft(upcosHk,N);
fori=1:
(N+1)/2
temp(i)=h_n(i);
end
fori=1:
(N-1)/2
h_n(i)=h_n(i+(N+1)/2);
end
fori=1:
(N+1)/2
h_n(i+(N-1)/2)=temp(i);
end
sqrcosHk=sqrt(abs(upcosHk));
subplot(2,2,3);
stem(sqrcosHk,'.')
subplot(2,2,4);
sqrh_n=idft(sqrcosHk,N);
fori=1:
(N+1)/2
temp(i)=sqrh_n(i);
end
fori=1:
(N-1)/2
sqrh_n(i)=sqrh_n(i+(N+1)/2);
end
fori=1:
(N+1)/2
sqrh_n(i+(N-1)/2)=temp(i);
end
filter11=h_n;
filter12=[1,zeros(1,N-1)];
filter21=sqrh_n;
filter22=sqrh_n;
figure;
subresult11=conv(sourc,filter11);subplot(3,2,1);stem(real(subresult11),'.');axis([0100-0.51.5]);title('经过发送滤波器');
subresult12=conv(sourc,filter21);subplot(3,2,2);stem(real(subresult12),'.');axis([0100-0.51.5]);%经过发送滤波器
fori=1:
length(subresult11)
[noise(i),]=gnguass(0,sigma);%生成噪声序列
end
subresult21=subresult11+noise;subplot(3,2,3);stem(real(subresult21),'.');axis([0100-0.51.5]);title('叠加噪声后波形');
subresult22=subresult12+noise;subplot(3,2,4);stem(real(subresult22),'.');axis([0100-0.51.5])%叠加噪声
subresult31=conv(subresult21,filter12);subplot(3,2,5);stem(real(subresult31),'.');axis([0100-0.51.5]);title('经过接收滤波器')
subresult32=conv(subresult22,filter22);subplot(3,2,6);stem(real(subresult32),'.');axis([0100-0.51.5]);%输出序列
fori=1:
length(subresult32)-15
subresult31s(i)=subresult31(i+15);
end
fori=1:
length(subresult31)-30
subresult32s(i)=subresult32(i+30);
end
subresult41=panjue(subresult31s,Ts,M);
subresult42=panjue(subresult32s,Ts,M);%抽样判决
[error1,prop1]=erro(sourc,subresult41,Ts,M);
[error2,prop2]=erro(sourc,subresult42,Ts,M);
a=length(sourc);
figure;
subplot(3,1,1);stem(sourc,'.');axis([0a-11]);title('源序列');
subplot(3,1,2);stem(subresult41,'.');axis([0a-11]);title('升余弦+直通输出判决结果');
subplot(3,1,3);stem(subresult42,'.');axis([0a-11]);title('匹配滤波器输出判决结果');
aa=real(subresult31);
bb=real(subresult32);
figure;
yantu(aa,4*Ts);title('升余弦+直通')
figure;
yantu(bb,4*Ts);title('匹配滤波器')
实验结果:
图一为随机产生的双极性码,在此我们M=100,即产生100点序列。
图二为升余弦滤波器频域波形及其时域波形(左)与升余弦平方根特性频域波形及其时域波形(右)。
图三为图形信号在两种方案中经过发送滤波器、叠加噪声、经过接受滤波器后的波形。
图四从上到下依次为源序列,方案一(升余弦加直通)输出判决结果,方案二(匹配滤波器)输出判决结果
图五、六为两种方案的眼图,经过对比方案一升余弦加直通(左图)与匹配滤波器(右图),右图明显清晰规则,可见匹配滤波器抗造性能明显好于升余弦加直通方案。
上图为点数M=3000时的眼图,相较之下右侧图清晰而规则,效果也比较明显。
3、假设加性噪声不存在,传输64个特定的二进制比特,如果比特速率Rb=1/Ts,基带系
统不采用匹配滤波器,画出接收滤波器的输出信号波形和眼图,判断有无码间干扰,求出
抽样判决后的数字序列。
如果将比特速率改为4/3Ts,4/5Ts,画出接收滤波器的输出信号波形和眼图,判断有无码间干扰,求出抽样判决后的数字序列。
所编程序如下:
(1)子程序如下:
子函数同实验2
主函数如下:
Ts=4;T0=1;
M=64;
alpha=0.5;%input('滚降系数=')
N=31;
[subsourc,Eb]=subserial(M);%生成序列
f=(-2/Ts):
(4/Ts)/(N-1):
(2/Ts);%产生余弦滚降
fori=1:
N
upcosHk(i)=upcos(f(i),alpha,Ts);
end
fori=1:
(N+1)/2%频域序列移位
temp(i)=upcosHk(i);
end
fori=1:
(N-1)/2
upcosHk(i)=upcosHk(i+(N+1)/2);
end
fori=1:
(N+1)/2
upcosHk(i+(N-1)/2)=temp(i);
end
figure;
subplot(1,2,1);
stem(abs(upcosHk),'*');
subplot(1,2,2);
h_n=idft(upcosHk,N);%产生时域序列
fori=1:
(N+1)/2%时域序列移位
temp(i)=h_n(i);
end
fori=1:
(N-1)/2
h_n(i)=h_n(i+(N+1)/2);
end
fori=1:
(N+1)/2
h_n(i+(N-1)/2)=temp(i);
end
filter11=h_n;
filter12=[1,zeros(1,N-1)];
a=1
forTB=[4,3,5];%TB赋值
sourc=sigexpand(subsourc,TB)%序列扩展
figure;
filter11out=conv(sourc,filter11);subplot(1,2,1);stem(filter11out,'.');
filter12out=conv(filter11out,filter12);subplot(1,2,2);stem(filter12out,'.');
fori=1:
length(filter12out)-15
filter12outs(i)=filter12out(i+15);
end
figure;
sh