通信系统仿真.docx
《通信系统仿真.docx》由会员分享,可在线阅读,更多相关《通信系统仿真.docx(59页珍藏版)》请在冰点文库上搜索。
通信系统仿真
通信系统仿真
姓名:
乔钟华
学号:
36012103
系院:
计算机与通信工程学院
专业:
移动通信
指导老师:
朱东进
日期:
2013年6月23日
实训1MATLAB软件操作入门
一、实验目的
1、熟悉MATLAB主界面及开发环境
2、熟悉MATLAB矩阵输入与运算
3、熟悉MATLAB基本图形绘制命令
二、实验设备
微型计算机一台、MATLAB仿真软件一套
三、实验原理
MATLAB软件的开发坏境除了包括用户界面,如命令窗口、命令历史窗口、当前路径窗口、工作空间窗口等窗口外,还有M文件编辑器和在线帮助浏览器等。
MATLAB是以矩阵作为基本编程单元的一种程序设计语言,矩阵运算在MATLLAB中非常简单,它往往只需几句语句,即可完成相应的运算,无需像其它软件中编制繁琐而容易出错的循环程序。
通过矩阵的输入及运算训练,在掌握矩阵相关知识的同时,学会M文件的建立和运行。
MATLAB有较强的绘图功能,可以用简单的语句便可完成二维和三维图形的绘制。
在开始使用MATLAB时,可以在命令窗口中键入DEMO命令,它将启动MATLAB的演示程序,用户可在此演示过程中领略MATLAB所提供的强大运算和绘图功能。
四、实验内容
1、矩阵的表示和输入
◆例题演示
(1)方法一:
在命令窗口中直接输入矩阵
在命令窗口中矩阵的输入用下列方法:
A=[111;-1-2-3;149]
或者用逗号代替空格.输入完后,按回车键,屏幕上显示:
A=
111
-1-2-3
149
(2)方法二:
在M文件中输入矩阵
选择菜单中filenewM-file
输入:
A=[1,2,3;4,5,6;7,8,9]
B=[9,8,7;6,5,4;3,2,1]
保存名为al的M的文件,退出编辑环境,此时在命令窗口中键入al命令就可调出A和B矩阵。
结果为:
A=
111
-1-2-3
149
B=
987
654
321
2、矩阵的基本运算
◆例题演示
已知A=[1,2,3;4,5,6;7,8,9]
B=[9,8,7;6,5,4;3,2,1]
求矩阵C=A+B?
(1)方法一:
直接在命令窗口中计算
输入:
A=[1,2,3;4,5,6;7,8,9];回车
B=[9,8,7;6,5,4;3,2,1];回车
C=A+B回车
结果:
C=
101010
101010
101010
(2)方法二:
在M文件中键入下列语句
A=[1,2,3;4,5,6;7,8,9]
B=[9,8,7;6,5,4;3,2,1]
C=A+B
保存为a2文件,并退出编辑环境,在命令窗口中键入文件名a2命令,屏幕上为出现A.B.C矩阵。
◆学生实验内容
运用M文件编写计算C=A.*B,D=A*B的小程序,文件名为a3,并且比较C和D计算结果。
3、函数波形的绘制
◆例题演示
(1)画出连续信号f(t)=3-2*e-t(0≤t≤6)的波形
(2)画出离散信号f(k)=3k(0≤k≤6)的波形
◆程序代码
t=0:
0.1:
6;
y1=3-2*exp(-t);
subplot(121)
plot(t,y1);
title('3-y1=3-2exp(-t)'
k=0:
1:
6;
y2=3.^k;
subplot(122)
stem(k,y2)
title('3-y2=3^k')
◆运行波形
注意:
plot是常用的绘制连续信号波形的函数,stem是绘制离散信号波形的函数。
◆学生实验内容
运用MATLAB编写程序绘制函数f(t)=3*e-2t+4*e-t(t>0;f(k)=sin(πk/8)0≤k≤16的波形
t=0:
0.1:
6
y1=3*exp(-2*t)+4*exp(-t);
subplot(121)
plot(t,y1)
title('3-y1')
k=0:
1:
16;
y2=sin(pi*k/8);
subplot(122)
stem(k,y2)
title('3-y2')
五、实训小结
通过本次实训的操作与学习,我们对MATLAB有了一定的了解,熟悉了MATLAB主界面以及它的开发环境。
通过MATLAB实现了对矩阵的输入与运算,并且掌握了一定的MATLAB的基本图形的绘制命令,进一步的提高了我们对MATLAB的理解能力。
实训2MATLAB中各信号的表示方法
一、实验目的
学会用MATLAB语言来表示信号及实现可视化
二、实验设备
微型计算机一台、MATLAB仿真软件一套
三、实验原理
信号按照自变量的取值是否连续可分为连续时间信号和离散时间信号。
严格意义上来说,MATLAB数值计算的方法并不能处理连续信号,而是通过在等时间间隔点得取样值来近似表示的,即当取样时间间隔足够小时,此时较多的抽样值就能较好地近似表示连续信号。
抽样间隔越小,连续信号表征准确性越好。
那么,离散信号与连续信号的表示不同之处在哪呢?
即连续信号自变量取值是连续的,离散信号的自变量取值是离散的,且必须是整数;可视化命令不一样,连续信号用plot命令,而离散信号用stem命令。
同样,MATLAB软件提供了许多表征信号的内部函数,对于连续时间信号而言,诸如正余弦信号、指数信号和抽样信号等,对于离散信号而言,有单位冲激信号、单位阶跃信号等,为信号的表示提供极大的方便。
那么,复杂的混合信号就可以通过简单的函数的算术运算来获得。
四、实验内容
1、典型连续信号
例题演示
(1)正弦信号
正弦信号的一般形式为:
f(t)=Ksin(wt+∮)或f(t)=Kcos(wt+∮),例如绘制f(t)=3sin(πt+π/4),0≤t≤6的波形。
方法一(冒号表达式法)
程序代码
>>k=3;w=pi;phi=pi/4;
>>t=0:
0.5:
6;%抽样间隔为0.5
>>ft=k*sin(w*t+phi);
>>plot(t,ft),gridon
>>axis([0,6,-3,3.2])
>>xlabel('t'),ylabel('t')
>>title('3-正弦信号')
运行波形
方法二(符号表达式法)
程序代码
ft=sym('3*sin(pi*t+pi/4)');
ezplot(ft,[0,6]),gridon
axis([0,6,-3.2,3.2])
xlabel('t'),ylabel('ft')
title('3-正弦信号')
运行波形
两种方法都可以来产生信号,区别在于:
冒号表达式法波形光滑度受取样间隔影响,而符号表达式法,能较光滑绘制信号波形。
(2)矩形脉冲信号
矩形脉冲信号在MATLAB软件中用rectpuls函数来实现,语句格式为:
y=reptculs(t,width),结果产生一个幅度为1,宽度为width,且以t=0为对称轴的矩形脉冲信号,width缺省值为1。
产生下列矩形脉冲信号
20≤t≤1
f(t)=
0t<0,t>1
程序代码
>>t=-2:
0.01:
3;
>>t0=1.0;width=2;
>>ft=3*rectpuls(t-t0,width);
>>plot(t,ft),gridon
>>axis([-23-0.53.2])
>>title(‘3-矩形脉冲信号’)
运行波形
周期性矩形信号或方波,用函数square产生,语句格式为y=square(t,DUTY),产生一个周期为2pi、幅值为+/-1的周期性矩形信号或方波。
其中DUTY为占空比DUTY%,缺省值为0.5.产生频率为20GHz、占空比为30%的周期方波信号
程序代码
>>t=0:
0.001:
0.3;
>>ft=square(2*pi*10*t,30);
>>plot(t,ft),gridon
>>axis([0.03-1.21.2])
>>title(‘3-周期方波信号’)
(3)单位阶跃信号
1t>0
u(t)=
0t<0
程序代码
方法一(冒号表达式法)
>>t=-2:
0.01:
6;
>>ft=(t>=0);
>>plot(t,ft),gridon;
>>axis([-26-0.21.2]);title(‘3-单位阶跃信号’)
方法二(符号表达式法)
>>ft=sym(‘heaviside(t)’);
>>ezplot(ft,[-26]),gridon;
>>axis([-26-0.21.2]);title(‘3-单位阶跃信号’)
方法三(定义函数法)
functionf=uCT(t)
f=(t>=0)%存为M文件,用于以后调用。
>>t=-2:
0.01:
6;
>>ft=uCT(t);
>>plot(t,ft),gridon;
>>axis([-26-0.21.2]);title(‘3-单位阶跃信号’)
运行波形
(4)三角波脉冲信号
非周期三角波脉冲信号在MATLAB中可以用函数tripuls来表示,其语句格式
ft=tripuls(t,width,skew)
上述函数格式用来产生一个幅度为1、宽度为width、以t=0为中心两边分别展开width/2的宽度大小,且斜度为skew的三角波脉冲信号。
其中,width的默认值为1,skew取值范围为-1~+1(若为0,即为对称三角波脉冲信号),且最大幅度值1出现在t=(width/2)*skew的位置。
若要产生一个幅度为2,宽度为6,斜率为-1/2的非周期三角波脉冲信号,且绘制波形。
程序代码
>>t=-4:
0.01:
4
>>ft=2*tripuls(t,6,-0.5);
>>plot(t,ft),gridon
>>axis([-44-0.22.2]);
>>title(‘3-三角脉冲信号’)
运行波形
如果要绘制周期性三角波脉冲信号,可以运用sawtooth函数来实现。
其格式为:
ft=sawtooth(t,width)。
用来产生一个周期为2pi,最大峰值为±1的周期三角波信号。
Width取值范围为0~1之间,指定一个周期内ft最大值出现位置,width是该位置横坐标与周期的比值。
学生实验内容
1)、编写绘制Sa(t)=sinc(t)/t,-10≤t≤10信号的波形的MATLAB程序,改变抽样间隔观察波形的变化,并记录运行曲线。
(运用两种以上方法解答)
k=1;w=1;phi=0;
t=-10:
0.01:
10;
ft=k*sinc(w*t+phi);
plot(t,ft),gridon
axis([-1010-222])
xlabel('t'),ylabel('ft')
title('3-正弦波形')
t=-10:
0.01:
10
k=1;w=1;phi=0
ft=k*sinc(w*t+phi);
plot(t,ft),gridon
axis([-10,10,-1,1])
xlabel('3-t'),ylabel('3-f1')
2)、编写绘制f(t)=u(t+0.5)-u(t-0.5)的波形。
(运用两种以上方法解答)
t=-2:
0.01:
6
ft=uCT(t+0.5)-uCT(t-0.5)
plot(t,ft),gridon
axis([-26-0.21.2])
title(‘3-实训‘)
t=-2:
0.01:
6
f1=(t>=-0.5)
f2=(t>=0.5)
f=f1-f2
plot(t,ft),gridon
axis([-26-0.21.2])
title(‘3-实训‘)
ft=sym('heaviside(t+0.5)-heaviside(t-0.5)');
ezplot(ft,[-26]),gridon
axis([-26-0.21.2])
title(‘3-实训‘)
2、典型离散信号
例题演示
(1)单位阶跃信号
1n≥0
u(n)=0n<0
程序代码
Functiony=uDT(n)
y=(n>=0);%存为M文件,用于以后调用。
>>n=-4:
6;
>>x=uDT(n)
>>stem(n,x,’fill’),xlabel(‘n’),gridon
>>title(‘单位阶跃序列’)
>>axis([-46-0.21.2])
运行波形
(2)单边指数信号
x(n)=anu(n)
程序代码[
>>n=0:
12
>>a1=1.6;a2=-1.6;
>>x1=a1.^n;x2=a2.^n;
>>subplot(121)
>>stem(n,x1,’fill’),gridon
>>xlabel(‘n’),title(‘x(n)=1.6^{n}’)
>>subplot(122)
>>stem(n,x2,’fill’),gridon
>>xlabel(‘n’),title(‘x(n)=(-1.6)^{n}’)
运行波形
(3)正弦信号
x(n)=sin(nwo+φ)
程序代码
>>n=0:
29;
>>x=sin(pi/8*n)
>>stem(n,x,’fill’),xlabel(‘n’),gridon
>>titile(‘正弦序列’)
>>axis([0,30,-1.2,1.2]);
运行波形
(4)单位冲激信号
1n=0
φ(n)=
0n≠0
程序代码
functiony=impDT(n)
y=(n==0);
>>n=-5:
5;
>>x=impDT(n);
>>stem(n,x,’fill’),xblabel(‘n’),gridon
>>title(‘单位冲激序列’)
>>axis([-55-0.21.2]);
运行波形
学生实验内容
1)、当单边指数信号的底数改为0.6时,编写MATLAB程序绘制其波形并与例题演示作比较。
n=0:
12
a1=0.6;
x1=a1.^n;
subplot(121)
stem(n,x1,'fill'),gridon
xlabel('n'),title('x(n)=0.6^{n}')
2)、编写MATLAB程序绘制函数y(n)=0.8n[u(n)-u(n-8)]的波形。
n=-10:
10
a=0.8
x=(impDT(n)-impDT(n-8))*a.^8)
stem(n,x,'fill'),xlabel('n'),gridon
axis([-1010-1.21.2])
title('3-实训')
五、实验小结
通过本此实验,我们学会了用MATLAB语言来表示信号以及实现可视化。
根据不同的方法来表示同一种波形符号,同时,我们对连续时间信号以及离散时间信号有了更为清晰的了解。
实训3信号的幅度调制及MATLAB实现
一、实验目的
1、掌握幅度调制的原理
2、对频谱产生初步认识
3、熟悉使用MATLAB软件来分析信号的调制问题及可视化
二、实验设备
微型计算机一台、MATLAB仿真软件一套
三、实验原理
设信号f(t)的频谱为F(jw),现将f(t)乘以载波信号cos(w0t),得到高频的已调信号y(t),即:
其中,f(t)称为调制信号。
实现信号调制的原理如图1所示
f(t)y(t)
cos(w0t)
图1幅度调制原理图
从频域上看,已调制信号y(t)的频谱为原调制信号f(t)的频谱搬移到±w0处,幅度降为原F(jw)的1/2,即:
f(t)cos(w0t)1/2{F[j(w+w0)]+F[(w-w0)]}
上式即为调制原理,也是傅立叶变换性质中“频移特性”的一种特别情形。
这里采用的调制方法为抑制载波方式,即y(t)的频谱中不含有cos(w0t)的频率分量。
MATLAB提供了专门的函数用于实现信号的调制。
语句格式为:
y=modulate(x,Fc,Fs,’method’)
[y,t]=modulate(x,Fc,Fs)
其中,x被调信号,Fc为载波频率,Fs为信号x的采样
频率,method为所采用的调制方式,若采用幅度调制、双边带调制、抑制载波调制,则’method’为’am’或’amdsd-sc’。
其语句格式为:
y=x*cos(2*pi*Fc*t)
其中,y为已调信号,t为函数计算时间间隔向量。
在MATLAB的实现程序中,为了观察f(t)及y(t)的频谱,可使用“信号处理工具箱函数”中估计信号的功率谱密度psd(),其格式是:
[Px,f]=psd(x,Nfft,Fs,window,noverlap,dflag)
其中,是被调信号(即本例中的f(t)),Niff指定快速付式变换FFT的长度,Fs为对信号的采样频率。
后面三个参数的意义将设计信号处理的更深的知识,在此暂不介绍。
四、实验内容
例题演示
设信号f(t)=sin(100πt),载波为频率为400Hz的余弦信号。
试用MATLAB实现调幅信号y(t),并观察y(t)的频谱。
程序代码
Fs=1000;
Fc=400;
N=1000;
n=0:
N-2;
t=n/Fs;
x=sin(2*pi*50*t);
subplot(221)
plot(t,x);
xlabel('t(s)');
ylabel('x');
title('3-被调信号');
axis([00.1-11])
Nfft=1024;
window=hamming(512);
noverlap=256;
dflag='none';
[Pxx,f]=psd(x,Nfft,Fs,window,noverlap,dflag);
subplot(222)
plot(f,Pxx)
xlabel('频率(Hz)');
ylabel('功率谱(X)');
title('被调信号的功率谱')
grid
y=modulate(x,Fc,Fs,'am');
subplot(223)
plot(t,y)
xlabel('t(s)');
ylabel('y');
axis([00.1-11])
title('已调信号')
[Pxx,f]=psd(y,1024,Fs,window,noverlap,dflag);
subplot(224)
plot(f,Pxx)
xlabel('频率(Hz)');
ylabel('功率谱(Y)');
title('已调信号的功率谱');
grid
运行波形
学生实验内容
设f(t)=u(t+1)-u(t-1),f1(t)=f(t)(cos10πt),试用MATLAB画出f(t)、f1(t)的时域波形及其幅度调制频谱。
程序代码
;
R=0.005;t=-1.2:
R:
1.2;
f=Heaviside(t+0.5)-Heaviside(t-0.5);
f1=f.*cos(10*pi*t);
subplot(221)
plot(t,f)
xlabel('30-t')
ylabel('3-f(t)');
subplot(222);
plot(t,f1);
xlabel('3-t');
ylabel('3-f1(t)=f(t)*cos(10*pi*t)');
W1=40;
N=1000;
k=-N:
N;
W=k*W1/N;
F=f*exp(-j*t'*W)*R;
F=real(F);
F1=f1*exp(-j*t'*W)*R;
F=real(F1);
Subplot(223);
plot(W,F);
xlabel('3-w');
ylabel('3-F(jw)');
subplot(224);
plot(W,F1);
xlabel('3-w');
ylabel('3-F1(jw)');
理解所给程序代码,记录运行波形图。
实验小结
通过本次实验的学习以及多次的练习,在MATLAB的基础上我们掌握了对于幅度是怎样调制的以及它的基本原理。
对频谱的产生有了一定的认识和了解,更加熟悉了MATLAB软件来分析信号的调制以及实现它的可视化。
实训四信号抽样及抽样定理
一、实验目的
1、熟悉使用MATLAB软件来对信号进行采样。
2、熟悉使用MATLAB软件来对信号进行重建。
二、实验设备
微型计算机一台、MATLAB仿真软件一套
三、实验原理
1、连续信号采集
对某一连续时间信号f(t)的采样原理图为
f(t)fs(t)
§Ts(t)
图一信号采样原理
由图可知,fs=f(t)*§Ts(t),其中,单位激冲采样信号§Ts(t)的表达式为:
§Ts(t)=∑§(t-nTs)
其傅里叶变换为Ω,其中Ω=2π/T,设F(j)为f(t)的傅里叶变换,fs(t)的频谱为Fs(j),由傅里叶变换的卷积定理,有:
fs(t)=f(t)Fs(j)=1/2=
假定f(t)是频带受限信号,带宽为,即当时,f(t)的频谱F(j)=0,则f(t)经过采样后的频谱Fs(j)就是F(j)在频率轴上搬移至0,±,±2···±n处。
因此,当≥2时,频谱不会发生混叠;而当≤2时,频谱发生混叠。
2、信号回复
设信号f(t)被采样后形成的采样信号为fs(t)信号的重构是指由fs(t)处理后,恢复出原来的信号f(t)的过程,英雌又称为信号回复。
设f(t)为带限信号,带宽为,经采样后的频谱为Fs(j)。
设采样频率≥2,则Fs(j)是以为周期的谱线。
现取一个频率特性为
Ts<Ω
H(j)=(其中,截止频率满足Ωm≤Ωc≤Ω/2)
0>Ω
的理想低通滤波器与Fs(j)相乘,得到的频谱即为源信号的频谱F(j)。
根据时域卷积定理,有:
f(t)=h(t)*fs(t)
其中,
因此,得到:
上式即为用f(nTs)表达f(t)的表达式,其中抽样函数Sa(t)为内插函数。
五、实验内容
例题演示
取信号f(t)=Sa(t)=sin(t)/t作为被采样的信号,其
_______________________________________________________________________________________________________________________________TsΩ<1
F(j)=
0Ω>1
即信号的带宽=1。
当采样频率=2时被称为临界采样(取=)。
临界采样状态下实现对信号Sa(t)的采样即由该采样信号恢复Sa(t)。
程序代码
clear;
wm=1;
wc=wm;
Ts=pi/wm;
ws=2*pi/Ts;
n=-100:
100;
nTs=n*Ts;
f=sinc(nTs/pi);
Dt=0.005;
t=-15:
Dt:
15;
fa=f