计算机仿真试验指导书docx.docx
《计算机仿真试验指导书docx.docx》由会员分享,可在线阅读,更多相关《计算机仿真试验指导书docx.docx(27页珍藏版)》请在冰豆网上搜索。
计算机仿真试验指导书docx
计算机仿真技术
实验指导书
计算机仿真技术实验指导书
MATLAB是一种交互式的以矩阵为基木数据结构的系统。
在生成矩阵对彖时,不要求明确的维数说明。
所谓交互式,是指MATLAB的草稿纸编程环境。
与C语言或FORTRON语言作科学数值计算的程序设计相比较,禾I」用MATLAB可节省大量的编程时间。
本实验指导书主要讨论四个实验。
实验一信号与系统的时域分析以及信号合成与分解
1.实验目的
(1)连续时间信号的向量表示法和符号运算表示法,典型离散信号表示;
(2)连续信号和离散信号的时域运算与时域变换;
(3)连续系统和离散系统的卷积,以及冲激响应、阶跃响应、单位响应、零状态响应;
(4)周期信号的傅立叶级数分解与综合(以周期方波为例);
2.实验原理与方法
(1)信号在MATLAB中的表示方法
MATLAB用两种方法来表示连续信号,一种是用向量的方法来表示信号,另一种则是符号运算的方法来表示信号。
用适当的MATLAB语句表示岀信号后,就可以利用MATLAB的绘图命令绘制出直观的信号时域波形。
向量表示法表示信号的方法是:
MATLAB用一个向量表示连续信号的时间范围,另一个向量表示连续信号在该时间范围内的对应样值。
如下列代码p二0.001;
t=-pi:
p:
pi;
f二1+cos(t);
plot(t,f)
titleCf(t)=l+cos(t)')
xlabel('t')
axis([-pi,pi,-0.2,2.4])执行后即可绘制连续信号l+cos(t)的时域波形。
借助于符号运算以及符号绘图函数ezplot,也可以绘制连续信号时域波形。
如下列代码
symst
f二sym('l+cos(t)')%定义符号表达式
ezplot(f,[-pi,pi])%绘制符号表达式波形
set(gcf,'color',‘M)%设置当前图形背景颜色为口色
执行后即可绘制连续信号1+COS(I)的时域波形。
与连续信号的表示相似,在MATLAB中,离散信号也需要用两个向量來表示,其中一个向量表示离散信号的吋间范围,另一个向量表示该离散信号在该时间范围内的对应样值。
但与连续信号表示有所不同的是,表示离散信号时间范围向量的元索必须为整数。
如下列代码
n=[-3,-2,-1,0,1,2,3];
x二[-3,2,-1,3,1,-2,1];
stem(n,x,'filled,)set(gcf,'color'J)titledx(n)')xlabel('n)
执行后即可绘制离散信号x(n)={-3,2,-1,3,1,-2,1}的时域波形。
(2)连续信号和离散信号的吋域运算与吋域变换
对连续信号而言,其基木时域变换有反褶、平移、尺度变换、倒相。
利用MATLAB的符号运算功能以及符号绘图函数ezplot,可以直观的观察和分析连续信号的吋域运算与吋域变换。
如下列代码
symst;
f=symC(t+1)*(heaviside(t+1)-heaviside(t))');
%定义信号符号表达式
%绘制信号波形
f=f+sym(,(heaviside(t)-heaviside(t-1))J):
ezplot(f,[-3,3])axis([-3,3,-1.2,1.2])set(gcf,'color'J)titleCf(t)‘)
pause
fl二subs(f,t,t+1.5);ezplot(fl,[-3,3])
f(t+1.5)')pause
f2二subs(f,t,t-1.5);
ezplot(f2,[-3,3])title('f(t-1.5)')pause
f3二subs(f,t,-t);
ezplot(f3,[-3,3])title(*f(-1)')pause
fl=-f;
ezplot(f4,[-3,3])
title('-f(t)')
%变量替换
%绘制f(t+1.5)波形
%绘制f(-t)波形
%绘制-f(t)波形
pause
f5=subs(f,t,(1/2)*t);
ezplot(f5,[-3,3])%绘制f(0.5t)波形
titleCf(0.5t)')
执行后即可实现连续信号的四种基木时域变换。
对离散信号而言,其基本吋域变换有反褶、平移、倒相。
其基本原理同连续信号时域变换。
(3)连续系统和离散系统的卷积,以及冲激响应、阶跃响应、单位响应、零状态响应
卷积积分是连续信号与系统分析的有效方法和工具,利用MATLAB求离散序论卷积和的专用函数conv可以实现连续信号卷积积分的快速计算,并绘制出卷积积分信号的时域波形。
其具体步骤如下:
将参与卷积积分运算的两个连续信号fi(t)和f2(t)以等时间间隔进行采样,得到其离散序论fi(nAr)和f2(nAr);
生成与离散序论fi(nAr)和f>(nAr)相对应的时间向量nl和n2;
调用conv函数计算卷积积分/(/)=/!
(/)*/2⑴在离散吋间点mM的采样值f(mAr);
生成与f(mAr)相对应的吋间向量n。
如下列代码
function[f,t]=ctsconv(fl,f2,tl,12)
%计算连续信号卷积积分实用函数
d二input('请输入取样时间间隔d:
');
f二conv(fl,f2);
%计算序列fl与f2的卷积和F
f二f*d;
%计算卷积积分信号f(t)离散样值
ts=tl
(1)+t2
(1)
%计算序列f非零样值的起点位蜀
1二length(tl)+length(12)-2;
%计算卷积积分f的非零样值的宽度
t=ts:
d:
(ts+l*d)
subplot(2,2,1)
%确定卷积积分f非零样值的时间向ffl
plot(tl,fl)
%在子图1绘制信号fl(t)的时域波形
axis([min(tl),max(tl),min(fl)-abs(min(fl)*0.2),max(fl)+max(fl)*0.2])title('fl(t))
xlabel('t')
subplot(2,2,2)
plot(t2,f2)
%在子图2绘制信号f2(t)的时域波形
axis([min(t2),max(12),min(f2)-min(f2)*0.2,max(f2)+max(f2)*0.2])title('f2(t))
xlabel('t')
subplot(2,2,3)
plot(t,f);
%在子图3绘制卷积积分f(t)的时域波形
axis([min(t),max(t),min(f)-min(f)*0.2,max(f)+max(f)*0.2])p=get(gca,'position');
p(3)=2.4*p(3);
set(gca,'position',p)title('f(t)二fl(t)*f2(t)')
%将第三个子图的横处标范围扩为原來的2.彳倍
xlabelCt‘)
执行后即可实现连续信号的卷枳枳分运算O
卷积和是离散信号与系统分析的有效方法和工具,利用MATLAB求离散序论卷积和的专用函数conv可以实现离散信号卷积和的计算。
(4)周期信号的傅立叶级数分解与综合
周期信号町展开成如下两种正交函数线性组合的无穷级数:
三角函数式的傅立里叶级数{cosncolt,...,sinncolt}和复指数函数式的傅里叶级数{ejn(0,t}o设周期为T的周期信号f(t)满足狄利赫利条件,则f(t)可以由三角函数的傅里叶级数线性组合表示如下:
f(/)=a。
+工(a”cosneot+bnsinneot)其中:
心
1%
2竹"
an=一I/(/)cos(z?
69t)dtn=l,2,3,•…
T山
2Z+TQ…
bn=—I/(Z)sin(A769t)dtn=L2,3,....
T
借助于MATLAB的数学运算功能和可视化功能,可以直观的观察和分析周期信号的分解与合成。
3.实验内容及步骤
(1)认真复习信号与系统的时域分析以及信号合成与分解等有关内容,阅读本实验原理与方法。
(2)编制实验用程序。
编制基本连续信号如单位阶跃信号、实指数信号、单边指数衰减信号、正弦信号、复指数信号、虚指数信号的可视化程序;
编制基木离散序列如单位抽样序列、单位阶跃序列、止弦序列、实指数序列、复指数序列的可视化程序;
用square>sawtooh>rectplus、triplus、sine函数生成常见的标准信号;
编写绘制xl(n)={2,1,0,1,2}和x2(n)={1,2,3,4,5,6}的时域波形,并编写绘
tt
hfOn二0
制二者相加和相乘的时域波形。
编写求解连续信号卷积积分并绘制卷积积分信号时域波形实用子程序;编写求解离散信号卷积和并能绘制卷积和信号时域波形的实用子程序;以周期方波为例,编写周期信号的傅立叶级数分解与合成的实用子程序。
4.实验方式及要求
每人一台安装有Matlab7.0的计算机,在计算机上编程仿真。
―人一组,独立完成。
5.思考题
脚本文件与函数文件编写上有什么区别?
二者用法上有什么区别?
6.实验报告要求
(1)简述实验口的及实验原理。
(2)按实验步骤附上实验过程中的连续信号以及离散序列的吋域波形,并对所得结果进行分析和解释。
(3)总结实验屮的主要结论。
(4)简耍回答思考题。
实验二信号与系统的频域分析以及信号采样和重构
1.实验目的
(1)周期信号频谱分析;
(2)典型周期信号的频谱分析(以周期方波脉冲和周期三角波脉冲为例);
(3)用FFT实现周期信号的频谱分析;
(4)信号幅度调制以及傅立叶变换性质的MATLAB实现;
(5)系统频率响应;
(6)信号的采样与重构;
2.实验原理与方法
(1)周期信号频谱分析
由丁周期信号可以分解如下:
0000
/(0=XF/E=Go+工0”COS/769t+bnsinneot)
w=-oon=\
则只要求出周期信号傅立叶级数的系数c〃(或者F”)及就可以根据他们随角频率e的变化关系画出信号的幅度频谱和相位频谱。
如下列代码
functionCTFSRP
%以周期矩形脉冲信号为例,计算其频谱特性
%Nf:
级数分解的谐波次数,由键盘输入
%Nn:
输出数据的准确位数
%aO:
直流项系数
%an:
第1,2,3,...次谐波余弦项展开系数
%bn:
第1,2,3,...次谐波正弦项展开系数
%tao:
周期矩形脉冲信号脉宽,由键盘输入
%T:
周期矩形脉冲信号周期,曲键盘输入
displayPleaseinputthevalueofT,taoandNf');%命令窗口提示用户输入参数
T=input('T=');
tao=input('tao二');
Nf=input('Nf=');
symstnkx
Nn=32;
an二zeros(Nf+1,1);
bn二zeros(Nf+1,1);
phase=zeros(Nf+1,1);
si二strcat(*Heaviside(t+*,nun)2str(tao/2),*)J);s2=strcat('Heaviside(t」,num2str(tao/2);
x=sym(sl)-sym(s2);
u(t+tao/2)-u(t-tao/2)
AO=2*int(x,t,-T/2,T/2)/T;
As=2*int(x*cos(2*pi*n*t/T),t,-T/2,T/2)/T;
Bs=2*int(x*sin(2*pi*n*t/T),t,-T/2,T/2)/T;
an
(1)=double(vpa(AO,Nn));
码数值数组
fork二1:
Nf
an(k+1)=double(vpa(subs(As,n,k),Nn));
码数值数组
bn(k+1)=doubIe(vpa(subs(Bs,n,k),Nn));
码数值数组
end
cn二sqrt(an.*Qn+bn.*bn);
fori=1:
Nf
定为0或pi
ifan(i)>=0
phase(i)=0;
else
phase(i)=pi;
end
end
t=-T*5:
0.001:
T*5;
%立义符号变量
%输出数据的位数为32位
%分配血系数数组
%分呢bn系数数组
%分配相位数组
%构造u(t+tao/2)
%构造u(t-tao/2)
%构造一个周期的脉冲信号
%求出玄流项a0
%求出余弦项系数an
%求出正弦项系数bn
%获取参数组A0所对应的ASCII
%获取参数组As所对应的ASCH
%获取参数组Bs所对应的ASCII
%计算幅度谱
%由于bn二0,和位由an的符号决
d=-T*5:
T:
T*5;
信号
subplot(311);
指向第1个子窗口
plot(l,XX);
axis([-T*5T*501.1]);
%titleC周期矩形脉冲信号','Fontsize',8);
si=strcatC周期矩形脉冲信号T二',num2str(T),'
xlabel(si,'Fontsize',8);
subplot(312);
k=0:
Nf;
stem(k,cn);
holdon;
plot(k,cn);
xlabel('幅度谱\omega*,'Fontsize',8);
subplot(313);
stem(k,phase);
xlabel('相位谱\omega*,'Fontsize',8);
%End
绘制周期信号的频谱特性
执行后即可实现周期信号频谱分析。
⑵信号幅度调制以及傅立叶变换性质
%将显示窗口分为3个子窗口,并
%绘制周期矩形脉冲信号
%指定坐标系范围
%标注标题
Tao二',num2str(tao),‘t');
%x轴标签
%指向第2个子窗口
%绘制幅度谱
%绘制幅度谱包络线
%指向第3个子窗口
%绘制相位谱
傅立叶变换性质非常多,本实验重点研究其频移特性即幅度调制性质。
幅度调制的原理参考《信号与系统》教林此处列举一个用门宽为2,门高为1的门信号去对余弦载频信号cos(3°t)进行调幅,观察其频谱图的例子。
如下列代码所示:
%傅里叶变换的频移特性
display('PleaseinputthevalueofwO');wO=input(*wO二');
%键盘输入载频
dt二0.002;
t=-1:
dt:
1.01;
f=Heaviside(t+1)-Heaviside(t-1);
fl=l/2*f.*(exp(-j*\v0*t)+exp(j*w0*t));
W1=1.5*pi*(w0/pi);
N二500;
k=-N:
N;
W=k*Wl/N;
F=f*exp(-j*t'*W)*dt;
Fl=fl*exp(-j*t'*W)*dt;
Fl(3)
F=real(F);
Fl=real(Fl);
subplot(221);
plot(t,f,'r');
axis([-1.51.501.1]);
titleC|'1信号','Fontsize',8);
xlabel('t','Fontsize',8);
subplot(223);
plot(t,fl,'b');
axis([-1.51.5-1.11.1]);
title(,矩形调幅信号','Fontsize',8);
xlabel('t','Fontsize',8);
subplot(222);
plot(W,F,i');
xlabel('w','Fontsize',8);
titleCfj信号的幅度频谱','Fontsize',8)
subplot(224);
plot(W,Fl,'b');
度频谱
holdon;
plot(W,F,'r');
xlabel('w');
%定义脉宽为2的门信号
%定义矩形调幅信号
%求门信号的傅里叶变换F(3)
%求矩形调幅信号的傅里叶变换
%用红色绘制时域门信号
%用蓝色绘制时域矩形调幅信号
%用红色绘制门信号的幅度频谱
%用蓝色绘制矩形调幅信号的幅
%绘制门信号的幅度频谱
title(strcat(f矩形调幅信号的幅度频谱(wO=',num2str(w0),')'));
%End
执行后即可实现调制特性的观察和演示。
(3)系统频率响应
MATLAB提供了专用函数freqs來实现连续系统频率响应H(j3)的分析。
该函数可以求出系统频率响应的数值解,并可以绘制出系统的幅频及相频响应曲线。
Freqs有四种调用格式,分别如下:
H=freqs(B,A,W)
[H,W]=freqs(B,A)
[H,W]=freqs(B,A,N)
freqs(B,A)
其具体用法及含义可以参考MATLAB帮助。
(4)信号的采样与重构
由Nyquist采样定理可知:
一个带宽为%的带限信号f(t),口J以唯一由它的均匀釆样信号Hg)确定,其中,釆样间隔Ts<—或吩2%称采样间隔Ts为Nyquist间隔,采样角频率©.为Nyquist角频率。
当a)s=2com时,称①为临界采样角频率;当9>2%时,称①为过采样角频率;当q<2%时,称©为欠釆样角频率,此时釆样信号的频率会发生混叠。
据此,可以编写MATLAB程序来说明信号采样和Nyquist采样定理作用。
采样是连续信号数字处理的第一个关键环节。
因此本实验重点讨论该部分内容。
同样,依据信号与系统有关知识,我们可以知道,原信号f(t)也可以唯一的曲采样函数内插进行恢复和重建。
详细原理及过程参考信号与系统教材。
对-个连续信号xa(t)进行理想采样的过程可用下式表示:
A
A
其中入⑴为暫⑴的理想采样,P⑴为周期冲激脉冲,即:
P⑴=工讯-订)
”=—co
AA
%(/)的傅里叶变换X.C/Q)为
A]8
丿G)=工比订八加QJ
'ZW=YO
从而有
九g)=[比⑴乞犯-妇X^xa(t)6(t-nT^dt
〃=Y0幵二YO
=£x3)e4dt
〃=一8
式中xa(nT)就是采样后得到的序列x(n),即
8
X(eJa))=工x(/7)厂蚀
z:
=-oo
x(n)的傅里叶变换为
x(n)=xa(nT)
比较可知
A
Xa(jn)=X(ejM)\ct)=nT
在数字计算机上观察分析齐种序列的频域特性,通常对X(cjs)在[0,2
n]上进行M点采样来观察分析。
对长度为N的有限长序列x(n),有
N-
XI严)=2x(m)e-j6Jk"
n=0
其中一个时域离散线性非移变系统的输入/输出关系为
8
y(n)=x(n)*h(n)=工x(m)h{n-m)
〃7=YO
上述卷积运算也可以在频域实现
3.实验内容及步骤
(1)认真复习信号与系统的频域分析有关内容,阅读木实验原理与方法。
(2)编制实验用频域分析程序。
编制典型周期信号如周期方波信号、周期锯齿脉冲信号、周期三角脉冲信号的频谱分析程序;
编制宜观的观察傅立叶变换性质的程序;
编制求解下列两个系统的频率响应并绘制幅度响应和相位响应曲线的程序;
系统-:
H(j(o)=
0.04(血+0.4丿e+2
系统二
H(jeo)=
一2丿0+10
2丿Q+10
(3)认真复习采样理论、离散信号与系统、线性卷积、序列的傅里叶变换及性质等有关内容,阅读本实验原理与方法。
(4)编制实验用主程序及相应子程序。
1信号产生子程序,用于产生实验中要用到的下列信号序列:
a.对如下连续信号
xa(t)=Aeatsin(Qot)u(t)
进行采样,可得到采样序列
xa(n)=xa(nT)=Ae_a,11sin(Q()nT)u(n),0Wn<50
其中A为幅度因子,a为衰减因子,Q°是模拟角频率,T为采样间隔。
这些参数都要在实验过程中由键盘输入,产生不同的xa⑴和xa(n)o
b.单位脉冲序列:
xb(n)=5(n)
c.矩形序列:
xc(n)=RN(n),N=10
2系统单位脉冲响应序列产生子程序。
本实验要用到两种FIR系统。
a.ha(n)=Ri0(n);
b.hb(n)=8(n)+2.55(n-1)+2.55(n-2)+6(n-3)
3有限长序列线性卷积子程序,用于完成两个给定长度的序列的卷积。
可以直接调用MATLAB语言中的卷积函数convo
corw用于两个冇限长度序列的卷积,它假定两个序列都从n=0开始。
调
用格式如下:
y=conv(x,h)
实验的主程序框图如下图1所示:
图1实验的主程序框图
xa(t)的幅频特性曲线如图2所示。
(5)调通并运行实验程序,完成下述实验内容:
1分析采样序列的特性。
a.取采样频率fs=lkHz,即T=1mso
b.改变采样频率,fs=3OOHz,观察|X(ejo)|的变化,并做记录(打印曲线);进一步降低采样频率,fs=200Hz,观察频谱混叠是否明显存在,说明原因,并记录(打印)这时的|X(ejG))|曲线。
2时域离散信号、系统和系统响应分析。
a.观察信号Xb(n)和系统hb(n)的时域和频域特性;利用线性卷积求信号Xb(n)通过系统hb(n)的响应y(n),比较所求响应y(n)^Uhb(n)的时域及频域特性,注意它们之间有无差别,绘图说明,并用所学理论解释所得结果。
b.观察系统hg)对信号xg)的响应特性。
3卷积定理的验证。
4.实验方式及要求
毎人一台安装有Matlab7.0的计算机,在计算机上编程仿真。
一人一组,独立完成。
5.思考题
(1)在分析理想采样序列特性的实验中,采样频率不同时,相应理想采样序列的傅里叶变换频谱的数字频率度量是否都相同?
它们所对应的模拟频率是否相同?
为什么?
(2)在卷积定理验证的实验中,如果选用不同的频域采样点数M值,例如,选M=10和M=20,分别做序列的傅里叶变换,求得
y2屉)=X。
(严他),幺=0,1,…,m—1
所得结果之间有无差异?
为什么?
(3)在编程调试过程中应注意哪些问题?
你都遇到了哪些问题,又是如何解决的?
6.实验报告耍求
(1)简述实验目的及实验原理。
(2