通原实验软件报告.docx
- 文档编号:24343266
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:49
- 大小:393.05KB
通原实验软件报告.docx
《通原实验软件报告.docx》由会员分享,可在线阅读,更多相关《通原实验软件报告.docx(49页珍藏版)》请在冰豆网上搜索。
通原实验软件报告
通信原理软件实验
实验报告
班级:
姓名:
班内序号:
学号:
电话:
北京邮电大学
BeijingUniversityofPostsandTelecommunications
【实验目的】
本实验是“通信原理”的一个组成部分。
在本实验中我们使用的软件工具是MATLAB。
设计本实验的目的是希望你在以下几方面有所收获;
1、会MATLAB软件的最基本运用。
MATLAB是一种很实用的数学软件,它易学易用。
MATLAB对于许多的通信仿真类问题来说是比较合适的。
2、了解计算机仿真的基本原理及方法,知道怎样通过仿真的方法去研究通信问题。
3、加深对通信原理课有关内容的理解。
【实验任务】
1、掌握matlab的基本操作及了解基本的仿真方法,分析运行范例程序。
2、按以下要求编制仿真程序并调试运行,其中第四项为可选内容
(1)绘出正弦信号波形及频谱
(2)单极性归零(RZ)波形及其功率谱,占空比为50%
(3)升余弦滚降波形的眼图及其功率谱。
滚降系数为0.5。
发送码元取值为0、2。
(4)最佳基带系统的Pe~Eb\No曲线,升余弦滚降系数a=0.5,取样值的偏差是Ts/4。
(5)Pe~Eb\No,升余弦滚降系数a=0.5,取样时间无偏差,但信道是多径信道,C(f)=abs(1-0.5*exp(-j*2*pi*f*dt)),dt=Ts/2。
(6)仿真数字基带传输系统,包括输入、输出信号波形及其功率谱,眼图(升余弦滚降系数a=0.5),Pe~Eb\No曲线,取样时间无偏差。
(7)自选题(部分相应系统、模拟调制、数字频带传输)。
【实验原理】
从数学的角度来看,信息从一地传送到另一地的整个过程或者其各个环节不外乎是一些码或信号的变换过程。
例如信源压缩编码、纠错编码、AMI编码、扰码等属于码层次上的变换,而基带成形、滤波、调制等则是信号层次上的。
码的变换是易于用软件来仿真的。
要仿真信号的变换,必须解决信号与信号系统在软件中表示的问题。
时域取样及频域取样
一般来说,任意信号
是定义在时间区间
上的连续函数,但所有计算机的CPU都只能按指令周期离散运行,同时计算机也不能处理
这样一个时间段。
即计算机处理信号是离散运行,有限域的。
对s(t)的解决方法:
我们把
按区间
截短为
,再对
按时间间隔
均匀取样得到
个样值。
仿真时我们用这个样值集合来表示信号
。
这样,将会出现一系列新的问题,现在从频域分析其频谱的变化。
显然
反映了仿真系统对信号波形的分辨率,
越小则仿真的精确度越高。
据通信原理所学,信号被取样以后的频谱是频率的周期函数,其重将(-inf,inf)截短为[-T/2,T/2],再将[-T/2,T/2]的信号均匀采样,采样点数为N=T/dt
1.采样信号xs(i)及其频谱Xs(ω)
若连续时间信号x(t)被数采卡DAQ中的采样器以等时间间隔T采样,则采样时刻0、T、2T…所
取得信号x(t)的瞬时值,就构成了连续信号x(t)的离散时间序列xs(i),i=0、1、2…如下图所示。
图一:
连续信号与离散信号
当x(t)的频谱为X(ω)时,则xs(i)的频谱Xs(ω),如下图所示。
为保证不出现频率混叠失真,要求:
即
,
取
Bs定义为仿真系统的带宽。
从以上的推导可以看出:
信号的时间采样间隔一定,则仿真信号的带宽也就相应定了,反之仿真信号的带宽一定,则信号的时间采样间隔也就相应定了。
2对频谱S(f)的处理
将频域为无限域的频域信号S(f)截短为[-Bs,Bs]域的信号
,再将带宽为[-Bs,Bs]的信号
均匀采样,采样点数为Nf=2Bs/df。
为保证不出现时域波形重叠失真,要求
,取
,即
从以上的推导可以看出:
信号的频率采样间隔一定,则仿真信号的周期也就相应定了,反之仿真信号的周期一定,则信号的频率采样间隔也就相应定了。
下面我们看看时域取样点数和频域取样点数的关系:
时域取样点数:
频域取样点数:
所以,时域取样点数与频域取样点数取值相同,这样就可以保证连续时间信号及连续频率信号均不出现重叠失真。
以上是防止重叠失真。
另外,为了提高仿真精度,要求提高取样点数N,其取值为2的冪次,
为了处理上的方便,我们今后规定采样点数N为2的整幂。
举例来说,假如设计要求的系统带宽为1MHz,频域最小分辨率为10KHz。
那么据此可求得,取。
对应的其它参数为,,,。
频域分析
限于篇幅,我们将不向大家介绍MATLAB中关于傅里叶变换的有关函数。
为了方便仿真,我们利用MATLAB的提供的函数编写了两个函数t2f及f2t。
t2f的功能是作傅氏变换,f2t的功能是作傅氏反变换,它们的引用格式分别为X=t2f(x)及x=f2t(X),其中x是时域信号截短并采样所得的取样值矢量,X是对的傅氏变换截短并采样所得的取样值矢量。
这两个函数存放在\...\matlab\work\目录中。
我们关心的另一个指标是信号的功率谱密度,任意信号的功率谱的定义是,其中是截短后的傅氏变换,是的能量谱,是在截短时间内的功率谱。
对于仿真系统,若x是时域取样值矢量,X是对应的傅氏变换,那么x的功率谱便为矢量P=(X.*conj(X))/T。
3.随机信号的产生
高斯噪声的产生
由于函数randn(1,N)产生N个互不相关的、均值为零、方差为1的高斯随机数,所以可用它来产生白高斯噪声。
设仿真系统的取样点数是N,系统带宽为,矢量x=n0*Bs*randn(1,N)的总功率为n0*Bs,最高频率分量为Bs,并且各样点的值互不相关,故它代表双边功率谱密度为的白噪声。
4.随机码序列的产生
语句round(rand(1,M))产生M个取值1、0等概的随机码。
函数round表示四舍五入。
函数rand产生均匀分布于区间的随机数。
语句sign(randn(1,M))产生M个取值1等概的随机码。
函数sign(x)对矢量x的元素取正负号,而高斯数randn取正负值的概率是相等的.
5.数字基带传输系统
6.产生随机码序列矢量a。
为了方便起见,我们规定a的长度M是2的整幂。
1)产生冲击序列信号。
设矢量imp代表信号。
imp可如下产生:
imp=zeros(1,N);
imp(1:
L:
N)=a/dt;
其中N是imp的矢量长度,M是码元矢量a中的码元数,L是每码元内的样点数。
我们规定M、N都是2的整幂,于是L自然也是2的整幂。
3)产生数字信号
设矢量s代表数字信号,矢量g代表脉冲波形,矢量G代表其频谱。
那么s的产生方法是:
s=conv(imp,g);
其中,函数conv表示卷击。
卷击后s的长度是length(imp)+length(g)-1。
扣除延迟时间及拖尾时间收,数字信号为:
ii=find(g==max(g));
s=s([1:
N]+ii
(1));
也可用频域的方法产生数字信号:
s=f2t(t2f(imp).*G);
注意此时,imp的点数应与g或G相同。
若g的宽度小于imp,则应用零补齐。
7.NRZ及RZ信号的产生
对于采用归零(RZ)及不归零(NRZ)矩形脉冲波形的数字信号,可以用简单的方法信号矢量s。
设a是码元矢量,N是总取样点数,M是总码元数,L是每个码元内的点数,那么NRZ信号可这样获得:
s=zeros(1,N);
forii=1:
L,s(ii+[0:
M-1]*L)=a;,end
对于,若Rt是要求的占空比,dt是仿真系统的时域采样间隔,则RZ信号的产生方法是
s=zeros(1,N);
forii=1:
Rt/dt,s(ii+[0:
M-1]*L)=a;,end
8.眼图
眼图是数字信号在示波器上重复扫描得到的显示图形。
若示波器的扫描范围是Na个码元,那么画眼图的方法是:
tt=[0:
dt:
Na*L*dt];
holdon
forii=1:
Na*L:
N-N*L
plot(tt,s(ii+[1:
Na*L]));
end
9.误码率
取样判决
设矢量a表示发送的码序列,矢量y表示在判决点观测到的叠加有噪声的接收信号,假设信道无时延。
接收机在每隔一个码元间隔取一个点作为判决量。
所有取样结果构成一个矢量b:
若取样时刻无偏差则b=y(1:
L:
N),若取样时刻有的恒定偏差,则b=y(1+k:
L:
N)。
若判决门限为Vth,则判决结果是c=sign(b-Vth)(双极性结果1)或c=(sign(b-Vth)+1)/2(单极性结果0、1)。
10.误码率测量
若在一次试观察中发送的码元是长度为M的矢量a,对应的判决结果是矢量c。
误码数是a与c中不相同的符号数,即n_err=length(find(a~=c)),于是误码率为Pe=n_err/M。
为了提高测量精度,可加大M或者重复多次观察。
多次观察时,误码率为总误码数除以总码元数。
【实验结果及分析】
实验一绘出正弦信号波形及频谱
源程序
globaldtdftfN
closeall
k=input('取样点数=2^k,k=[10]');
ifisempty(k),k=10;end
N=2^k
dt=0.02;%ms
df=1/(N*dt);%KHz
T=N*dt;%截短时间
Bs=N*df/2;%系统带宽
figure
(1)
set(1,'Position',[30,100,450,300])
%设定图1的窗口位置及大小
figure
(2)
set(2,'Position',[530,100,450,300])
%设定图2的窗口位置及大小
t=linspace(-T/2,T/2,N);%时域横坐标
f=linspace(-Bs,Bs,N);%频域横坐标
f0=1;%f0=1KHz
s=sin(2*pi*f0*t);
S=t2f(s);%S是s的傅氏变换
a=f2t(S);
P=S.*conj(S)/T;%功率谱
figure
(1)
plot(t,a,'b')
grid
axis([-2,+2,-1.5,1.5'])
xlabel('t(ms)')
ylabel('s(t)(V)')
title('正弦信号波形')
figure
(2)
as=abs(S);
plot(f,as,'r');
grid
axis([-2*f0,+2*f0,min(as),max(as)])
xlabel('f(KHz)')
ylabel('S(f)(V/KHz)')
title('正弦信号频谱')
仿真图
正弦信号时域波形
正弦信号频谱
实验二单极性归零(RZ)波形及其功率谱,占空比为50%
源程序
globaldttdfN
closeall
k=input('取样点数=2^k,k=[10]');
ifisempty(k),k=10;end
N=2^k;%采样点数
L=64;%每码元的采样点数
M=N/L;%码元数
Rb=2;%码速率是2Mb/s
Ts=1/Rb;%码元间隔
dt=Ts/L;%时域采样间隔
Rt=0.5;%占空比
df=1/(N*dt);%频域采样间隔
T=N*dt;%截短时间
Bs=N*df/2;%系统带宽
t=linspace(-T/2,T/2,N);%时域横坐标
f=linspace(-Bs,Bs,N);%频域横坐标
EP=zeros(1,N);
forj=1:
100
a=round(rand(1,M));%产生M个取值0,1等概的随机码
s=zeros(1,N);%产生一个N个元素的零序列
fori=1:
Rt*L
s(i+[0:
M-1]*L)=a;%产生单极性归零码
end
Q=T2F(s);%付氏变换
P=Q.*conj(Q)/T;%P为单极性归零码的功率
EP=(EP*(i-1)+P)/i;%累计平均
end
aa=30+10*log10(EP+eps);%加eps以避免除以零
figure
(1)
set(1,'position',[30,100,450,300])%设定窗口位置及大小
figure
(2)
set(2,'position',[530,100,450,300])%设定窗口位置及大小
figure
(1)
plot(t,s,'r')
xlabel('t(ms)')
ylabel('s(t)(V)')
title('单极性归零码(RZ)波形')
axis([-5,5,-0.5,1.5])
grid
figure
(2)
plot(f,aa,'g')
xlabel('f(MHZ)')
ylabel('Ps(f)(MHZ)')
title('单极性归零码(RZ)频谱')
axis([-10,+10,-50,50])
grid
仿真图
单极性归零码(RZ)波形
单极性归零码(RZ)频谱
实验结论
从图中可以看出,若二进制符号“1”和“0”等概率出现,符号间互补相关、责单极性龟苓码的功率普不仅含有离散的支流分量及连续谱,而且还包含离散的时钟分量及其奇次谐波分量。
由于其功谱中含有离散的时钟分量,所以所在数字通信系统得接受端可从单极性归零码序列中利用窄带滤波法提取离散的时钟分量。
实验三升余弦滚降波形的眼图及其功率谱。
滚降系数为0.5。
发送码元取值为0、2。
源程序
globaldttdfN
closeall
N=2^13;%采样点数
L=32;%每码元的采样点数
M=N/L%码元数
Rb=2;%码速率是2Mb/s
Ts=1/Rb;%码元间隔
dt=Ts/L;%时域采样间隔
df=1/(N*dt)%频域采样间隔
T=N*dt%截短时间
Bs=N*df/2%系统带宽
Na=4;%示波器扫描宽度为4个码元
alpha=0.5;
t=linspace(-T/2,T/2,N);%时域横坐标
f=linspace(-Bs,Bs,N);%频域横坐标
g1=sin(pi*t/Ts)./(pi*t/Ts);
g2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);
g=g1.*g2;%升余弦脉冲波形
G=t2f(g);
figure
(1)
set(1,'Position',[30,100,450,300])
%设定窗口位置及大小
figure
(2)
set(2,'Position',[530,100,450,300])
%设定窗口位置及大小
%holdon
grid
xlabel('tinus')
ylabel('s(t)inV')
title('升余弦滚降波形的眼图')
EP=zeros(size(f))+eps;
forii=1:
100
a=sign(randn(1,M));
imp=zeros(1,N);%产生冲激序列
imp(L/2:
L:
N)=a/dt;
S=t2f(imp).*G;%升余弦信号的傅氏变换
s=f2t(t2f(imp).*G);%升余弦信号的时域波形
s=real(s);
P=S.*conj(S)/T;%升余弦信号的功率谱
EP=(EP*(ii-1)+P+eps)/ii;
figure
(1)
plot(f,30+10*log10(EP),'g');
grid
axis([-3,+3,-50,50])
xlabel('f(MHz)')
ylabel('Ps(f)(dBm/MHz)')
title('升余弦滚降波形的眼图功率谱')
figure
(2)%画眼图
holdon
grid
tt=[0:
dt:
Na*L*dt];
forjj=1:
Na*L:
N-Na*L
plot(tt,s(jj:
jj+Na*L));
end
end
仿真图
升余弦滚降波形的眼图功率谱
升余弦滚降波形的眼图
实验四最佳基带系统的Pe~Eb\No曲线,升余弦滚降系数a=0.5,取样值的偏差是Ts/4
源程序
globaldttfdfNT%全局变量
closeall
clearEb_N0Pe
N=2^13;%采样点数
L=8;%每码元的采样点数
M=N/L%码元数
Rb=2;%码速率是2Mb/s
Ts=1/Rb;%码元间隔
dt=Ts/L;%时域采样间隔
df=1/(N*dt)%频域采样间隔
T=N*dt%截短时间
Bs=N*df/2%系统带宽
alpha=0.5%滚降系数=0.5
t=linspace(-T/2,T/2,N);
%时域横坐标
f=linspace(-Bs,Bs,N)+eps;
%频域横坐标
figure
(1)
set(1,'Position',[30,100,450,300])%设定窗口位置及大小
hr1=sin(pi*t/Ts)./(pi*t/Ts);
hr2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);
hr=hr1.*hr2;
HR=abs(T2F(hr));
GT=sqrt(HR);
GR=GT;
forloop1=1:
20
Eb_N0(loop1)=(loop1-1)
%分贝值变为真值
eb_n0(loop1)=10^(Eb_N0(loop1)/10);
Eb=1;
n0=Eb/eb_n0(loop1);
%信道噪声谱密度
sita=n0*Bs;%噪声功率
n_err=0;%误码计数
forloop2=1:
5
a=sign(randn(1,M));%发送码元
imp=zeros(1,N);
imp(L/2:
L:
N)=a/dt;
IMP=T2F(imp);
n_ch=sqrt(sita)*randn(size(t));%信道噪声
nr=real(F2T(T2F(n_ch).*GR));
sr=real(f2t(IMP.*HR))+nr;
y=sr(L/4:
L:
N);%以L/4为起点,步长L,取样点N
aa=sign(y);%接收码元
n_err=n_err+length(find(aa~=a));
end
Pe(loop1)=n_err/(M*loop2);%误码率Pe'=n_err/(M*loop2)
figure
(1)
semilogy(Eb_N0,Pe,'g');
eb_n0=10.^(Eb_N0/10);%还原为真值
holdon
semilogy(Eb_N0,0.5*erfc(sqrt(eb_n0)));
axis([0,9,1e-4,1])
xlabel('Eb/N0')
ylabel('Pe')
title('误码率曲线')
end
仿真图
误码率曲线
实验结论
由图可以看出,由于判决时刻有Ts/4的误差,滚降系数为0.5,所以实际的信噪比(绿线)比理想信噪比(蓝线)差。
实验五Pe~Eb\No,升余弦滚降系数a=0.5,取样时间无偏差,但信道是多径信道,C(f)=abs(1-0.5*exp(-j*2*pi*f*dt)),dt=Ts/2。
源程序
globaldttfdfNT
closeall
clearEb_N0Pe
N=2^13;%采样点数
L=32;%每码元的采样点数
M=N/L%码元数
Rb=2;%码速率是2Mb/s
Ts=1/Rb;%码元间隔
dt=Ts/L;%时域采样间隔
df=1/(N*dt);%频域采样间隔
T=N*dt%截短时间
Bs=N*df/2%系统带宽
alpha=0.5%滚降系数
t=[-T/2+dt/2:
dt:
T/2];%时域横坐标
f=[-Bs+df/2:
df:
Bs];%频域横坐标
figure
(1)
set(1,'Position',[30,100,450,300])%设定窗口位置及大小
%升余弦
hr1=sin(pi*t/Ts)./(pi*t/Ts);
hr2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);
hr=hr1.*hr2;
HR=abs(t2f(hr));
%取模是为了忽略时延
GT=sqrt(abs(HR));
GR=GT;%发送和接收滤波器模型
tao=Ts/2;
C=1-0.5*exp(-j*(2*pi*f*tao));
%多径信道模型
G=C.*HR;%总体特性
forloop1=1:
20
Eb_N0(loop1)=(loop1-1);%Eb/N0indB
eb_n0(loop1)=10^(Eb_N0(loop1)/10);
Eb=1;
n0=Eb/eb_n0(loop1);
%信道的噪声谱密度
sita=n0*Bs;%信道中噪声功率
n_err=0;%误码计数
forloop2=1:
5
a=sign(randn(1,M));
imp=zeros(1,N);%产生冲激序列
imp(L/2:
L:
N)=a/dt;
IMP=t2f(imp);
n_ch=sqrt(sita)*randn(size(t));
%信道噪声
nr=real(f2t(t2f(n_ch).*GR.*C));
%输出噪声
sr=real(f2t(IMP.*G))+nr;%接收信号
y=sr(L/2:
L:
N);
%取样,取样时刻无偏差
aa=sign(y);%判决
n_err=n_err+length(find(aa~=a));
%误码个数
end
Pe(loop1)=n_err/(M*loop2);
%实际误码率
figure
(1)
semilogy(Eb_N0,Pe,'g');
%实际误码率曲线
eb_n0=10.^(Eb_N0/10);
holdon
semilogy(Eb_N0,0.5*erfc(sqrt(eb_n0)));%理论误码率曲线
axis([0,9,1e-4,1])
xlabel('Eb/N0indb')
ylabel('Pe')
title('误码率曲线')
end
仿真图
误码率曲线:
绿色线为实际曲线,蓝色为理论误码率曲线
实验结论
由上图可以看出,当取样时间偏差为Ts/4的时候,误码率明显高于无偏差的理论误码率。
原因可以从信号的眼图看出,没有偏差时的取样点在眼睛睁开最大处,判决效果最佳,而偏差Ts/4之后取样信号的幅度下降,比较容易受噪声干扰,所以误码率上升。
实验六仿真数字基带传输系统,包括输入、输出信号波形及其功率谱,眼图(升余弦滚降系数a=0.5),Pe~Eb\No曲线,取样时间无偏差。
(单极性归零码的占空比可调)
源程序
%单极性归零码通过基带系统后输出及其功率谱和眼图
globaldtdftfN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 软件 报告