武汉大学电气工程学院信号与系统MATLAB仿真报告.docx
- 文档编号:20138964
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:51
- 大小:755.48KB
武汉大学电气工程学院信号与系统MATLAB仿真报告.docx
《武汉大学电气工程学院信号与系统MATLAB仿真报告.docx》由会员分享,可在线阅读,更多相关《武汉大学电气工程学院信号与系统MATLAB仿真报告.docx(51页珍藏版)》请在冰豆网上搜索。
武汉大学电气工程学院信号与系统MATLAB仿真报告
信号与系统
上机实验报告
电气工程学院
2008级五班
吕业诚
2008302540145
实验一信号的产生与运算
一、实验目的
1、熟悉和掌握常用的用于信号和系统时域仿真分析的MATLAB函数;
2、掌握连续时间和离散时间信号的MATLAB产生,掌握用周期延拓的方法将一个非周期信号进行周期信号延拓形成一个周期信号的MATLAB编程;
基本要求:
掌握用MATLAB描述连续时间信号和离散时间信号的方法,能够编写MATLAB程序,实现各种信号的时域变换和运算,并且以图形的方法再现各种信号的波形。
二、实验原理
MATLAB提供许多函数用于产生常用的基本信号:
如阶跃信号、脉冲信号、指数信号、正弦信号和周期矩形波信号等。
这些基本信号时信号处理的基础。
在MATLAB中,无论是连续时间信号还是离散时间信号,MATLAB都是用一个数字数字序列来表示信号,这个数字序列在MATLAB中叫向量(vector)。
通常的情况下,需要与时间变量相对应。
如前所述,MATLAB有很多内部数学函数可以用来产生这样的数字序列,例如:
sin()、cos()、exp()等函数可以直接产生一个按照正弦、余弦或指数规律变化的数字序列。
三、实验内容
Q1_1:
修改程序Program1_1,并以Q1_2为文件名存盘,产生实指数信号x(t)=e-2t。
要求在图形中加上网格线,并使用函数axis()控制图形的时间范围在0~2秒之间。
然后执行该程序,保存所得程序。
closeall;clear;clc;
t=-2:
0.01:
2;
x=exp(-2*t);
plot(t,x);
gridon;
axis([0,2,0,1]);
Q1_2:
修改程序program1_1,并以Q1_3为文件名存盘,使之能够仿真从键盘上任意输入的一个连续时间信号,并利用该程序仿真信号x(t)=e-2t。
clear;closeall;clc;
t=-2:
0.01:
2;%定义采样时间
x=input('Typeinsignalx(t)inclosedform:
');%通过键盘输入
plot(t,x)
Q1_3:
将实验原理中所给的单位冲激信号和单位阶跃信号的函数文件在MATLAB文件编辑器中编好,并分别以文件名为delta和u保存在工作文件夹中以便使用。
delta.m:
functiony=delta(t)
dt=0.01;
y=(u(t)-u(t-dt))/dt;
u.m:
%Unitstepfunction阶跃函数
functiony=u(t)
y=(t>=0);
Q1_4:
根据示例程序的编程方法,编写一个MATLAB程序,由给定信号x(t)=e-2tu(t),求信号y(t)=x(1.5t+3),并绘制x(t)和y(t)的图形。
clear;closeall;clc;
symst;
x=sym('exp(-0.5*u(t))');
y=subs(x,t,1.5*t+3);
subplot(2,1,1)
ezplot(x,[-5,5]);
subplot(2,1,2);
ezplot(y,[-5,5]);
Q1-5:
给定一个离散时间信号x[n]=u[n]-u[n-8],仿照示例程序Program1_5,编写程序Q1_8,产生x[n]的左移序列x1[n]=x[n+6]和右移序列x2[n]=x[n-6],并在同一个图形窗口的三个子图中分别绘制这三个序列的图形。
clear;closeall;clc;
n=-10:
10;
x=u(n)-u(n-8);
x1=u(n+6)-u(n+6-8);
x2=u(n-6)-u(n-6-8);
holdon
plot(n,x,'r');
plot(n,x1,'g');
plot(n,x2);
axis([-10,10,0,1.1])
Q1_6:
总结
1.信号与系统分析,就是基于信号的分解,在时域中,信号主要分解成冲击信号的积分
2.比较plot,stem,stairs,ezplot命令的区别:
plot:
折线图
stem:
二维杆图
stairs:
阶梯图
ezplot:
符号函数二维图
实验二连续时间系统的时域分析
一、实验目的
1、加深对线性时不变系统中零状态响应概念的理解,掌握其求解方法;
2、掌握给定连续系统的冲激响应和阶跃响应;
3、牢固掌握系统的单位冲激响应的概念,掌握LTI系统的卷积表达式及其物理意义,掌握卷积的计算方法、卷积的基本性质;
4、掌握利用MATLAB计算卷积的编程方法,并利用所编写的MATLAB程序验证卷积的常用基本性质;
5、掌握MATLAB描述LTI系统的常用方法及有关函数,并学会利用MATLAB求解LTI系统响应,绘制相应曲线;
6、掌握线性时不变连续系统的时域数学模型用MATLAB描述的方法,掌握卷积运算、线性常系数微分方程的求解编程。
二、实验原理
1、LTI系统的单位冲激响应和卷积模型
给定一个连续时间LTI系统,在系统的初始条件为零时,用单位冲激信号δ(t)作用系统,此时系统的响应信号称为系统的单位冲激响应,一般用h(t)来表示。
需要强调的是,系统的单位冲激响应是在激励信号为δ(t)时的零状态响应。
离散时间LTI系统的单位冲激响应的定义与连续时间LTI系统的单位冲激响应相同,只是离散时间单位冲激函数δ(n)的定义有所不同。
系统输入信号x(t)、x[n]和输出信号y(t)、y[n]之间的关系可以用一个数学表达式来描述,这个数学表达式为
这个表达式就是LTI系统的卷积模型,它是根据系统的线性和时不变性以及信号可以分解成单位冲激函数经过推理得到的。
这个表达式告诉我们一个很重要的结论,那就是:
任意LTI系统可以完全由它的单位冲激响应h(t)/h[n]来确定。
2、用线性常系数微分方程描述LTI系统
线性常系数微分方程或差分方程是描述LTI系统的另一个时域模型。
一个连续时间LTI系统,它的输入信号x(t)输出信号y(t)关系可以用下面的微分方程来表达
在MATLAB中,一个LTI系统也可以用系统微分方程的系数来描述。
例如一个LTI连续时间系统的微分方程为
MATLAB则用两个系统向量num=[1]和den=[132]来描述该系统,其中num和den分别表示系统微分方程右边和左边的系数,按照微分方程运算的降阶排列。
MATLAB的内部函数impulse(),step(),initial(),lsim()可以用来计算并绘制连续时间LTI系统的单位冲激响应,单位阶跃响应,零输入响应和任意信号作用于系统的零状态响应。
这些函数的用法描述如下:
h=impulse(num,den,T)和impulse(num,den,T)
s=step(num,den,T)和step(num,den,T)
y=lsim(num,den,x,t)和lsim(num,den,x,t)
函数impulse()和step()用来计算由num和den表示的LTI系统的单位冲激响应和单位阶跃响应,响应的时间范围为0~T,其中den和num分别为系统微分方程左右两边的系数向量,T为指定的响应的终点时间。
h和s的点数默认值为101点,由此可以计算步长为dt=T/(101-1)。
不带返回值的函数如impulse(num,den,T)和step(num,den,T)将直接在屏幕上绘制系统的单位冲激响应和单位阶跃响应曲线。
带返回值的函数如lsim(num,den,x,t)和y=lsim(num,den,x,t),用来计算由num和den表示的LTI系统在输入信号x的作用下的零状态响应。
其中t为指定的时间变化范围,x为输入信号,他们的长度应该是相同的。
3、卷积的计算
卷积的计算通常可按下面五个步骤进行
1.该换两个信号波形图中的横坐标,由t改为T,T变成函数的自变量;
2.把其中一个信号反摺,如把h(t)变成h(-T);
3.把反摺的信号做移位,移变量是t,这样t是一个参变量。
在T坐标系中,t>0时图形右移,t<0时图形左移;
4.计算两个信号重叠部分的乘积x(T)h(t-T);
5.完成相乘后图形的积分。
三、实验内容
Q2-1:
仿照范例程序Program2_1,编写程序2_1,计算并绘制由如下微分方程表示的系统在输入信号为x(t)=(e-2t-e-3t)u(t)时的零状态响应曲线。
程序:
clear,closeall,clc;
t=-10:
0.01:
10;
num=[8,0];
den=[1,3,2];
x=exp(-2.*t)-exp(-3.*t);
y=lsim(num,den,x,t);
plot(t,y);
title('零状态响应')
Q2-2:
仿照program2_2,给定下面两个连续信号,求两连续信号的卷积。
程序:
clear;closeall;clc;
dt=0.01;
t=-5:
dt:
5;
f1=2.*(u(t)-u(t-4));
f2=u(t)-u(t-2);
y=dt.*conv(f1,f2);
t1=-10:
dt:
10;
plot(t1,y);
title('¾í»ý');
xlabel('t');
ylabel('f');
Q2-3:
编写程序Q2_4,使之能够接受以键盘方式输入的定义在不同时间段的两个不同连续时间信号并完成卷积运算,分别绘制两个信号及其卷积的结果的图形,图形按照2×2分割成四个子图。
%初始化
clear;
closeall;
clc;
dt=0.01;
%输入参数
t01=input('请输入f1(t)的起始时刻:
\n');
t11=input('请输入f1(t)的终止时刻:
\n');
t=t01:
dt:
t11;
t1=t;
f1=input('请输入f1(t)的函数:
\n');
t02=input('请输入f2(t)的起始时刻:
\n');
t12=input('请输入f2(t)的终止时刻:
\n');
t=t02:
dt:
t12;
t2=t;
f2=input('请输入f2(t)的函数:
\n');
%计算卷积
y=dt.*conv(f1,f2);
t=(t01+t02):
dt:
(t11+t12);
%输出图像
subplot(2,1,1)
plot(t,y);
title('卷积结果');
xlabel('\itt');
ylabel('y(t)');
subplot(2,2,3)
plot(t1,f1);
title('f1(t)');
xlabel('\itt');
ylabel('f1(t)');
subplot(2,2,4)
plot(t2,f2);
title('f2(t)');
xlabel('\itt');
ylabel('f2(t)');
Q2-4:
总结:
1、写出卷积的运算步骤,并谈谈你对卷积的一些基本性质的理解。
利用MATLAB计算卷积的函数是什么?
如何使用?
卷积的计算通常可按下面五个步骤进行
(1)设定两个函数的定义域使之为有限长。
(2)把其中一个信号反摺,如把h(t)变成h(-T);
(3)把反摺的信号做移位,移变量是t,这样t是一个参变量。
在T坐标系中,t>0时图形右移,t<0时图形左移;
(4)计算两个信号重叠部分的乘积x(T)h(t-T);
(5)完成相乘后图形的积分。
利用MATLAB计算卷积的函数是conv(),其语法为:
y=conv(x,h)。
其中x和h分别是两个作卷积运算的信号,y为卷积结果。
2、在时域中,描述一个连续时间LTI系统的数学模型有:
3、MATLAB是如何表示一个由微分方程描述连续时间LTI系统的?
求解连续时间LTI系统的单位冲激响应、单位阶跃响应以及在某一个输入信号作用下的零状态响应的MATLAB函数有哪些?
在MATLAB中表示一个由微分方程描述连续时间LTI系统的是:
[x]=A[x]=Bu
单位冲激响应函数:
impulse(num,den,T)
单位阶跃响应函数:
step(num,den,T)
在某一个输入信号作用下的零状态响应函数:
lsim(num,den,x,t)
其中den和num分别为系统微分方程左右两边的系数向量,T为指定的响应的终点时间,t为指定的时间变化范围,x为输入信号。
实验三连续时间系统的频谱-傅里叶变换
一、实验目的
1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法;
2、观察截短傅里叶级数而产生的“Gibbs现象”,了解其特点以及产生的原因;
3、掌握连续时间傅里叶变换的分析方法及其物理意义;
4、掌握各种典型的连续时间非周期信号的频谱特征以及傅里叶变换的主要性质;
5、学习掌握利用MATLAB语言编写计算CTFS、CTFT和DTFT仿真程序,并能利用这些程序对一些典型信号进行频谱分析,验证CTFT、DTFT的若干重要性质。
基本要求:
掌握并深刻理解傅里叶变换的物理意义,掌握信号的傅里叶变换的计算方法,掌握利用MATLAB编程完成相关的傅里叶变换的计算。
二、实验原理及方法
1、连续时间周期信号的傅里叶级数CTFS分析
任何一个周期为T1的正弦周期信号,只要满足狄利克利条件,就可以展开傅里叶级数。
其中三角傅里叶级数为:
或:
其中
,称为信号的基本频率,a0,ak和bk分别是信号x(t)的直流分量、余弦分量幅度和正弦分量幅度,
、
为合并同频率项之后各正弦谐波分量的幅度和初相位,它们都是频率kω0的函数,绘制出它们与kω0之间的图像,称为信号的频谱图。
指数形式的傅里叶级数为:
其中,
为指数形式的傅里叶级数的系数,按如下公式计算:
指数形式的傅里叶级数告诉我们,如果一个周期信号x(t),满足狄里克利条件,那么它就可以被看做是由很多不同频率的互为谐波关系的周期复指数信号所组成,其中每一个不同频率的周期复指数信号称为基本频率分量,其复幅度为ak。
这里“复幅度”指的是ak通常是复数。
2、连续时间信号傅里叶变换----CTFT
傅里叶变换在信号分析中具有非常重要的意义,它主要是用来进行信号的频谱分析的。
傅里叶变换和其逆变换定义如下:
连续时间傅里叶变换主要用来描述连续时间非周期信号的频谱。
任意非周期信号,如果满足狄里克利条件,那么,它可以被看做是由无穷多个不同频率的周期复指数信号
的线性组合构成的,每个频率所对应的周期复指数信号
称为频率分量,其相对幅度对应频率的
之值,其相位为对应频率的
的相位。
3、傅里叶级数的MATLAB计算
设周期信号
的基本周期为
,且满足狄里克利条件,则其傅里叶级数的系数可由下式得到:
基本频率为:
对周期信号进行分析时,我们往往只需要对其在一个周期内进行分析即可,通常选择主周期。
4、用MATLAB实现CTFT的计算
MATLAB进行傅里叶变换有两种方法,一种利用符号运算的方法计算,另一种是数值就按,本实验要求采用数值计算的方法来进行傅里叶变换的计算。
严格说用数值计算的方法计算连续时间信号的傅里叶变换需要有个限定条件,即信号是时限信号,也就是当时间|t|大于某个给定时间时其值衰减为零或接近为零,这个条件与前面提到的为什么不能用无限多个谐波分量来合成周期信号的道理是一样的,计算机只能处理有限大小和有限数量的数。
采用数值计算算法的理论依据是:
若信号为时限信号,当时间间隔T取得足够小时,上式可以演变为:
上式用MATLAB表示为:
X=x*exp(j*t’*w)*T
其中X为信号
的傅里叶变换,W为频率
,T为时间步长。
三、实验内容
Q3-1给程序Program3_1增加适当的语句,并以Q2_2存盘,使之能够计算例题3-1中的周期方波信号的傅里叶级数的系数,并绘制信号的幅度谱和相位谱线图。
clear;closeall;clc;
T=2;
dt=0.00001;
t=0:
dt:
2;
x1=(mod(t,2)<1);
w0=2*pi/T;
N=13;
ak
(1)=0;
fork=0:
N
ak(2+k)=(1/T)*x1*exp(-i*k*w0*t')*dt;
end
abs=abs(ak);
phi=angle(ak)/2/pi*360;
subplot(2,1,1);
stem(0:
N+1,abs,'.k');
xlabel('\it幅频特性');
subplot(2,1,2);
stem(0:
N+1,phi,'k');
xlabel('\fontsize{14}\fontname{黑体}相频特性');
Q3-2分别手工计算
的傅里叶级数的系数。
写出信号
在其主周期内的数学表达式;用MATLAB手工计算
的傅里叶级数的系数(系数ak从-10到10共21个系数),写出过程并保存结果。
仿照program3_1,编写程序,以计算
的傅里叶级数的系数。
程序:
clear;closeall;clc;
T=2;
dt=0.00001;
t=0:
dt:
2;
x1=((mod(t,2)<1).*2-1).*(mod(t,1)-0.5)+0.5;
w0=2*pi/T;
N=13;
ak
(1)=0;
fork=0:
N
ak(2+k)=(1/T)*x1*exp(-i*k*w0*t')*dt;
end
abs=abs(ak);
phi=angle(ak)/2/pi*360;
subplot(2,1,1);
stem(0:
N+1,abs,'.k');
xlabel('\it幅频特性');
subplot(2,1,2);
stem(0:
N+1,phi,'k');
xlabel('\fontsize{14}\fontname{黑体}相频特性');
实验四连续时间系统的频域分析
一、实验目的
1、掌握系统频率响应特性的概念及其物理意义;
2、掌握系统频率响应特性的计算方法和特性曲线的绘制方法;
3、学习和掌握幅度特性、相位特性的物理意义;
4、掌握用MATLAB语言进行系统频率响应特性分析的方法;
5、进一步理解信号的抽样及抽样定理;
基本要求:
掌握LTI连续和离散时间系统的频域数学模型和频域数学模型的MATLAB描述方法,深刻理解LTI系统的频率响应特性的物理意义,理解滤波和滤波器的概念,掌握利用MATLAB计算和绘制LTI系统频率响应特性曲线中的编程。
二、实验原理及方法
1.用MATLAB计算系统频率响应
在本实验中,表示系统的方法仍然是用系统函数分子和分母多项式系数行向量来表示。
试验中用到的MATLAB函数如下:
[H,w]=freqs(b,a):
b,a分别为连续时间LTI系统的微分方程右边和左边的系数向量,返回的频率响应在各频率点的样点值(复数)存放在H中,系统默认的样点数目为200点;
Hm=abs(H):
求模数,即进行
运算,求得系统的幅度频率响应,返回值存于Hm之中。
real(H):
求H的实部;imag(H):
求H的虚部;
phi=atan(-imag(H)./(real(H)+eps)):
求相位频率响应特性,atan()用来计算反正切值;或者
phi=angle(H):
求相位频率响应特性;
tao=grpdlay(num,den,w):
计算系统的相位频率响应所对应的群延时;
计算频率响应的函数fregs()的另一种形式是:
H=freg(b,a,w):
在指定的频率范围内计算系统的频率响应特性。
在使用这种形式的fregs/freqz函数时,要在前面先指定频率变量w的范围。
2、信号的抽样及抽样定理
根据傅里叶变换的频率卷积定理,时域两个信号相乘,对应的积的傅里叶变换等于这两个信号的傅里叶变换之间的卷积。
所以,已知抽样信号
的傅里叶变换为:
实际抽样过程,很容易用简单的数学公式来描述。
设连续时间信号用
表示,抽样周期为
,抽样频率为
,则已抽样信号的数学表达式为:
三、实验内容
Q4-1:
给范例程序关键语句加注释
Q4-2:
运行示例程序并保存结果。
例一:
clear,close,clc;
b=1;
a=[1,3,2];
[H,w]=freqs(b,a);
H=H.';
Hm=abs(H);
phi=angle(H)*180/pi;
Hr=real(H);
Hi=imag(H);
subplot(2,2,1);
plot(w,Hm);
gridon;
title('Magnituderesponse');
xlabel('Frequencyinrad/sec');
subplot(2,2,2);
plot(w,phi);
gridon;
title('Phaseresponse');
xlabel('Frequencyinrad/sec');
subplot(2,2,3);
plot(w,Hr);
gridon;
title('Realpartoffrequenceyresponse');
xlabel('Frequencyinrad/sec');
subplot(2,2,4);
plot(w,Hi);
gridon;
title('Imaginarypartoffrequenceyresponse');
xlabel('Frequencyinrad/sec');
例二:
clear;closeall;clc;%初始化
t=0:
0.01:
10;
Ts=1/4;
n=0:
Ts:
10;
x=cos(0.5*pi*t);
xn=cos(0.5*pi*n);
subplot(2,1,1)
plot(t,x);
title('Acontinuous-timesignalx(t)');
xlabel('Timet');
subplot(2,1,2)
stem(n,xn,'.');
title('Thesampledversionx[n]ofx(t)');
xlabel('Timeindexn');
例三:
clear;closeall;clc;
tmax=4;
dt=0.01;
t=0:
dt:
tmax;
Ts=1/10;
ws=2*pi/Ts;
w0=20*pi;
dw=0.1;
w=-w0:
dw:
w0;
n=0.1:
1:
tmax/Ts;
x=exp(-4*t).*u(t);
xn=exp(-4*n*Ts);
subplot(2,2,1)
plot(t,x);
title('Acontinuous-timesignalx(t)');
xlabel('Timet');
axis([0,tmax,0,1]);
gridon;
subplot(2,2,3)
stem(n,xn,'.');
title('Thesampledversionx[n]ofx(t)');
xlabel('Timeindexn');
axis([0,tmax/Ts,0,1]);
gridon;
Xa=x*exp(-i*t'*w)*dt;
X=0;
fork=-8:
8
X=X+x*exp(-i*t'*(w-k*ws))*dt;
end
subplot
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武汉大学 电气工程 学院 信号 系统 MATLAB 仿真 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)