信号与系统上机实验指导书.docx
《信号与系统上机实验指导书.docx》由会员分享,可在线阅读,更多相关《信号与系统上机实验指导书.docx(29页珍藏版)》请在冰豆网上搜索。
![信号与系统上机实验指导书.docx](https://file1.bdocx.com/fileroot1/2023-2/2/4ec307c8-facd-4a55-92f3-e3aaef90487f/4ec307c8-facd-4a55-92f3-e3aaef90487f1.gif)
信号与系统上机实验指导书
《信号与系统》
上机实验指导书
山东建筑大学
信息与电气工程学院
电子信息教研室
实验一、连续信号的时域描述与运算……………………………………………….3
实验二、离散信号的时域描述与运算………………………………………………14
实验三、连续信号的频域分析……………………………………………………..19
实验四、离散信号的频域分析…………………………………………………….
实验五、连续线性时不变系统分析……………………………………………….22
实验一连续信号的时域描述与运算
一、实验目的
1,通过绘制典型信号的波形,了解这些信号的基本特征;
2,通过绘制信号运算结果的波形,了解这些信号运算对信号所起的作用。
二、实验原理及方法
1.基于matlab的信号描述方法
如果一个信号在连续时间范围内(除有限个间断点外)有定义,则称该信号为连续时间信号,简称为连续信号。
从严格意义上讲,matlab数值计算方法并不能处理连续信号,但是可以利用连续信号在等时间间隔点的采样值来近似表示连续信号,即当采样间隔足够小时,这些离散采样值能够被matlab处理,并且能够较好地近似表示连续信号。
(1)向量表示法
对于连续时间信号f(t),可以定义两个行向量f和t来表示,其中向量t是形如t=t1:
△t:
t2的matlab命令定义的时间范围向量,t1为信号的起始时间,t2为终止时间,△t为时间间隔;向量f为连续时间信号f(t)在向量t所定义的时间点上的采样值。
例如对于连续正弦信号
,可以用向量表达式表示为:
t=-8:
1:
8;
y=sin(pi*t/4);
plot(t,y);
gridon;
axis([-88-1.11.1]);
绘制的信号波形如实验图1-1所示,当把时间间隔△t取得更小(如△t=0。
01)时,就可以得到f(t)较好的近似波形,如实验图1-2所示。
(2)符号运算表示法
如果信号可以用一个符号表达式来表示,则可用ezplot命令绘制出信号的波形。
例如对于连续信号
,可以用符号表达式表示为:
f=sym(‘sin(pi/4*t)’);
ezplot(f,[-88]);
该命令绘制的信号波形如实验图1-3所示。
2.常用连续信号的matlab表示
(1)单位阶跃信号u(t)
实验图1-1时间间隔为1时的信号波形
实验图1-2时间间隔为0.01时的信号波形
实验图1-3符号表示法绘制的信号波形
实验图1-4单位阶跃信号
Matlab中用heaviside()表示,如实验图1-4所示。
Matlab源程序:
heaviside()函数定义:
functionf=heaviside(t)
f=(t>=0);
函数heaviside(t)的使用
t=-1:
0.01:
1;
y=heaviside(t);
plot(t,y);
gridon;
axis([-11-0.11.1]);
(2)单位冲激信号δ(t)
Matlab中用dirac()表示,如实验图1-5所示。
Matlab源程序:
冲激函数定义:
functiondirac(t1,t2,t0)
dt=0.01;
t=t1:
dt:
t2;
n=length(t);
x=zeros(1,n);
x(1,(-t0-t1)/dt+1)=1/dt;
stairs(t,x);
axis([t1,t2,0,1.2/dt])
title('单位冲击信号δ(t)');
冲激函数的调用
dirac(-4,4,0);
实验图1-5单位冲激信号
(3)符号函数sgn(t)
Matlab中用sign()表示,如实验图1-6所示。
Matlab源程序:
t=-1:
0.01:
1;
y=sign(t);
plot(t,y);
gridon;
实验图1-6符号函数
(4)取样函数Sa(t)
如实验图1-7所示。
Matlab源程序:
t=-10*pi:
0.1:
10*pi;
y=sinc(t/pi);
plot(t,y);
gridon;
axis([-1010-0.31.1]);
(5)门函数gτ(t)
运用matlab的内部函数rectpuls,调用格式为:
y=rectpuls(t)%产生幅度为1,门宽为1,对称中心在t=0的门函数
y=rectpuls(t,w)%产生幅度为1,门宽为w,对称中心在t=0的门函数
y=rectpuls(t,t0,w)%产生幅度为1,门宽为w,对称中心在t=t0的门函数
实验图1-7取样函数
实验图1-8单位斜坡信号
(6)单位斜坡信号
单位斜坡信号的数学表达式为
Matlab源程序:
t=-3:
0.01:
3;
f=t.*heaviside(t);
plot(t,f);
axis([-33-0.13.1]);
gridon;
3.连续信号的基本运算
(1)信号的相加与相乘
已知信号f1(t)、f2(t),信号相加和相乘记为:
f(t)=f1(t)+f2(t)
f(t)=f1(t).*f2(t)
信号与信号相加、相乘后的波形如实验图1-9所示。
Matlab源程序:
t=0:
0.01:
3;
f1=heaviside(t)-heaviside(t-1);
f2=t.*(heaviside(t)-heaviside(t-1))+heaviside(t-1);
subplot(2,2,1);
plot(t,f1);gridon;axis([-12-0.11.1])
subplot(2,2,2);
plot(t,f2);gridon;axis([-13-0.11.1])
subplot(2,2,3);
plot(t,f1+f2);gridon;axis([-1202.2])
subplot(2,2,4);
plot(t,f1.*f2);gridon;axis([-12-0.11.1])
(2)信号的微分与积分
对于连续时间信号,其微分运算是用diff函数来完成的。
其语句格式为:
diff(function,’variable’,n);
其中function表示需要进行求导运算的信号,或者被赋值的符号表达式;variable为求导运算的独立变量;n为求导的阶数,默认值为一阶导数。
实验图1-9信号与信号相加与相乘的波形
连续信号的积分运算用int函数来完成,其语句格式为:
int(function,’variable’,a,b);
其中function为被积信号,或者被赋值的符号表达式,variable为积分变量,a,b为积分上、下限,a和b省略时求不定积分。
对实验1-9中的信号f2(t)求微分,其波形如实验图1-10所示;对实验图1-9中的信号f1(t)求积分,其波形如实验图1-11所示。
Matlab源程序:
symstf2;
f2=t*(heaviside(t)-heaviside(t-1))+heaviside(t-1);
f=diff(f2,'t',1);
t=-1:
0.01:
2;
ezplot(f,t);
gridon;
Matlab源程序:
symstf1;
f1=heaviside(t)-heaviside(t-1);
f=int(f1,'t');
t=-1:
0.01:
2;
ezplot(f,t);
gridon;
实验图1-10信号的微分
实验图1-11信号的积分
三、实验内容及步骤
1,上机实验前,认真阅读实验原理,掌握信号表示和信号运算方法。
2,利用matlab命令画出下列连续信号的波形图。
(1)(2-e-t)*u(t)
(2)u(cos(t))
(3)产生幅度为1,周期为1,占空比为0.5的周期矩形信号。
3,
f(t)
t
1
0
-1
1
2
已知f(t)的波形如实验图1-12所示,作出f(t)+f(t)、f(t)*f(t)、f(t)的微分、f(t)的积分的波形。
实验图1-12
四、思考题
1,讨论f(t+t0)与f(-t+t0)平移的方向是否相同,为什么?
2,讲信号f(t)编程f(-2t+4)共有多少中方法,请列举出来。
五、实验报告要求
1,简述实验目的和实验原理。
2,编程实现实验内容,要求附上源程序。
3,回答思考题。
4,总结试验中的主要结论、收获和体会。
实验二离散信号的时域描述与运算
一、实验目的
1,掌握常用时域离散信号的matlab表示方法。
2,掌握离散信号的基本运算,包括信号相加、相乘、平移、反转、差分与累加和等。
二、实验原理及方法
离散时间信号是指在离散时刻才有定义的信号,简称离散信号或者序列。
离散信号的绘制一般用stem函数,matlab只能表示一定时间范围内有限长度的序列,而对于无限长序列,只能在一定范围内表示出来。
常用离散信号的matlab表示
(1)单位阶跃序列u(n)
如实验图2-1所示。
实验图2-1单位阶跃序列
Matlab源程序:
n=-3:
5;x=u(n);
stem(n,x,'fill');xlabel('n');ylabel(‘u(n)’);gridon;axis([-35-0.11.1]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
functionf=u(n)
f=(n>=0);
(2)单位脉冲序列
如实验图2-2所示。
Matlab源程序:
n=-3:
3;x=delta(n);
stem(n,x,'fill');xlabel('n');gridon;axis([-33-0.11.1]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
functionf=delta(n)
f=(n==0);
实验图2-2单位脉冲序列
(3)矩形序列RN(n)
如实验图2-3所示。
Matlab源程序:
n=-2:
8;
x=u(n)-u(n-4);
stem(n,x,'fill');xlabel('n');gridon;axis([-28-0.11.1]);
实验图2-3矩形序列
(4)单边指数序列f(n)=anu(n)
如实验图2-4所示。
Matlab源程序:
n=0:
10;
a1=1.2;a2=-1.2;a3=0.8;a4=-0.8;
f1=a1.^n;f2=a2.^n;f3=a3.^n;f4=a4.^n;
subplot(2,2,1);stem(n,f1,'fill');xlabel('n');gridon;
subplot(2,2,2);stem(n,f2,'fill');xlabel('n');gridon;
subplot(2,2,3);stem(n,f3,'fill');xlabel('n');gridon;
subplot(2,2,4);stem(n,f4,'fill');xlabel('n');gridon;
从实验图2-4可知,当|a|>1时,单边指数序列发散;当a|<1时,序列收敛;当a>0时,序列取正值;当a<0时,序列在正负之间摆动。
(5)正弦序列f(n)=sin(nω0+φ)
如实验图2-5所示,matlab源程序:
n=0:
39;
f=sin(pi/5*n);
stem(n,f,'fill');xlabel('n');gridon;axis([040-1.21.2]);
其中ω0是正弦序列的数字域频率,φ为初始相位。
与连续的正弦信号不同,正弦序列的自变量n必须是整数,同时只有当2π/ω0为有理数时,正弦序列才具有周期性。
实验图2-4单边指数序列
实验图2-5正弦序列
三、实验内容与步骤
1,上机实验前,认真阅读实验原理,掌握序列表示和运算的方法。
2,利用matlab命令画出下列序列的波形图。
(1)(2-0.5-n)u(n)
(2)((3/2)n)*sin(nπ/5)
四、思考题
1,常用的连续时间信号和离散时间信号有哪些相同点?
有哪些不同点?
2,连续信号的基本运算和离散信号的基本运算有哪些相同点?
有哪些不同点?
五、实验报告要求
1,简述实验目的和实验原理;
2,编程实现实验内容,要求附上源程序;
3,总结实验中的主要结论、收获和体会。
实验三连续信号的频域分析
一、实验目的
1,掌握周期信号的频谱方法分析-傅立叶级数及其物理意义。
2,深入理解信号频谱的概念,掌握典型信号的频谱以及傅立叶变换的主要性质。
二、实验原理及方法
在“信号与系统”课程中详细讨论了信号的傅立叶分析方法,包括周期信号的频谱分析-傅立叶级数和非周期信号的频谱分析-傅立叶变换的理论。
1.周期信号的三角形式的傅立叶级数
2.周期信号的指数形式的傅立叶级数
利用欧拉公式,式3-1可表示为
(3-6)
式(3-6)表明,任意周期信号f(t)可分解为无穷多项不同频率的复指数
的加权和,其各分量的复数幅度或向量为
(3-7)
计算机不能计算无穷多个系数,假设需要计算的谐波次数为N,则总的系数个数为2N+1。
在确定了时间范围和时间变化的步长即T和dt之后,对某一个系数,式(3-7)可以近似为
对于全部的2N+1个系数,上面的计算可以按照矩阵运算实现,matlab实现系数计算的程序如下:
dt=0.01;
T=2;t=-T/2:
dt:
T/2;omega0=2*pi/T;
f1=input(‘putintheperiodicsignalf(t)overoneperiodf1(t)=’);
N=input(‘putinthenumberN’);
forn=-N:
N
F(N+1+n)=f1*exp(-j*n*omega0*t’)*dt/T;%计算全部2N+1个系数
end
其中,时间变量的变化步长dt的大小对傅立叶基数系数的计算精度影响非常大,dt越小,精度越高,但计算机计算所花的时间也越长。
同时,原信号可以用有限项谐波成分来近似合成,即
Matlab实现信号合成的程序如下:
F=0;
L=2*N+1;
Forn=1:
L-1
F=f+f(n)*exp(j*(n-1-N)*omega0*t);%信号合成
end
3.周期信号的频谱
为了直观地表示信号所含各分量的振幅,以频率(或角频率)为横坐标,以各谐波的振幅An或虚指数信号的幅度|Fn|为纵坐标,做出的线图称为幅度谱。
从幅度谱中可以清楚直观地看出各分量的相对大小。
类似的,也可以画出各谐波初相角的线图,称为相位谱。
4.非周期信号的傅立叶变换
把上述理论推广到非周期信号中去,就可导出傅立叶变换。
对于非周期信号f(t),其傅立叶变换及其反变换式定义如下:
式中,
是原信号f(t)的傅立叶变换,称为频谱函数,它是一个复函数。
它的模量是频率Ω的函数,表示信号中各频率分量的相对大小;相角也是频率的函数,表示频率分量的相位。
三、实验内容
1.求实验图3-5所示周期信号(T=2,τ=1)的傅立叶级数,用matlab做出其前3、9、21、45项谐波的合成波形并与原信号比较,做出其单边幅度谱和相位谱。
2,求不同占空比下,周期矩形脉冲的幅度谱和相位谱,例如τ/4=1/4、1/8。
四、思考题
1,简述周期信号频谱的特点,当信号的周期T和脉宽发生变化时,信号的频谱怎样变化。
2,总结周期信号和非周期信号频谱的不同和联系。
3,由傅立叶变换的性质,总结时域和频域的对应关系。
五、实验报告要求
1,简述实验目的和实验原理。
2,编程实现实验内容,要求附上源程序。
3,总结实验中的主要结论、收获和体会。
实验五、连续线性时不变系统分析
一、实验目的
1,掌握连续LTI系统的单位冲激响应、单位阶跃响应和任意激励对应响应的求解方法;
2,掌握连续LTI系统的频域分析方法。
二、实验原理及方法
1.连续LTI系统的时域分析
(1)连续线性时不变系统的描述
设连续线性时不变系统的激励为e(t),响应为r(t),则描述系统的微分方程可表示为:
为了在matlab编程中调用有关函数,可以用向量a和b来表示该系统,即
这里要注意,向量a和b的元素排列是按微分方程的微分阶次降幂排列,缺项要用0补齐。
(2)单位冲激响应
单位冲激响应h(t)是指连续LTI系统在单位冲激信号的激励下的零状态响应。
Matlab提供了专门用于求解连续系统单位冲激响应的函数impulse(),该函数还能绘制其时域波形。
其调用格式有:
impulse(b,a)
impulse(b,a,t),
impulse(b,a,t1:
p:
t2)
y=impulse(b,a,t1:
p:
t2):
不绘制系统冲激响应波形,只计算出对应的数值解。
(3)单位阶跃响应
单位阶跃响应s(t)是指连续LTI系统在单位阶跃信号u(t)的激励下的零状态响应。
Matlab提供了专门求解系统单位阶跃响应的函数step(),该函数还能绘制其时域波形。
其调用格式有:
step(b,a);
step(b,a,t);
step(b,a,t1:
p:
t2);
其中y=step(b,a,t1,:
p:
t2):
不绘制系统阶跃响应波形,只计算出相应的数值解。
(4)任意激励下的零状态响应
已经知道,连续LTI系统可用常系数线性微分方程来描述。
Matlab提供的函数lsim能对上述微分方程描述的连续LTI系统的响应进行仿真,该函数不仅能绘制指定时间范围内的系统响应波形,而且能求出系统响应的数值解。
Lsim(b,a,x,t)
其中b和a是描述系统的向量,而x和t则表示输入信号的行向量及其时间范围向量。
需要特别强调的是,matab总是把由分子和分母多项式表示的任何系统都当作是因果系统,因此,利用impulse()、step(b,a)、lsim(b,a,x,t)函数求的的响应总是因果信号。
同时卷积积分也是LTI系统求解零状态响应的重要工具之一。
卷积积分的计算实际是利用信号的分段求和来近似实现的。
例如下题,根据给定的两个连续信号e(t)=u(t)-u(t-1)和h(t)=u(t)-u(t-1),编写程序完成两个信号的卷积计算,并绘制波形。
实验图5-1信号及信号的卷积积分
clear;
t0=-2;t1=4;dt=0.01;
t=t0:
dt:
t1;
e=heaviside(t)-heaviside(t-1);
h=heaviside(t)-heaviside(t-1);
y=dt*conv(e,h);%计算e(t)和h(t)的卷积积分
subplot(2,2,1);
plot(t,e);gridon;title('e(t)');axis([t0,t1,-0.2,1.2]);
subplot(2,2,2);
plot(t,h);gridon;title('h(t)');axis([t0,t1,-0.2,1.2]);
subplot(2,1,2);
t=2*t0:
dt:
2*t1;
plot(t,y);gridon;title('e(t)*h(t)');axis([2*t0,2*t1,-0.1,1.2]);
(5)任意激励下的全响应
Matlab提供了专门用于求解连续系统全响应的函数dsolve(),其调用格式为:
Dsolve(‘eqn1’,’eqn2’,…):
解符号形式的微分方程,输入参数可以是n个微分方程,也可以是初始条件。
值得注意的是,无论是输入参数还是输出参数都是符号形式的变量。
例5-1描述某线性时不变系统的微分方程为:
且f(t)=t2,y(0-)=1,y’(0-)=1,试求系统全响应,并指出其零输入响应、零状态响应、自由响应与强迫响应。
通过求解微分方程得到的全响应为:
强迫响应
自由响应
零输入响应
零状态响应
Matlab参考程序及数值计算结果。
实验图5-2理论计算得到的各种系统响应
实验图5-3由matlab数值计算得到的各种系统响应
Matlab符号运算参考程序
y=dsolve('D2y+3*Dy+2*y=2*t+2*t^2','y(0)=1','Dy(0)=1');
yht=dsolve('D2y+3*Dy+2*y=0');
yt=dsolve('D2y+3*Dy+2*y=2*t+2*t^2');
yp=yt-yht;
yh=y-yp;
yzi=dsolve('D2y+3*Dy+2*y=0','y(0)=1,Dy(0)=1');
yzs=dsolve('D2y+3*Dy+2*y=2*t+2*t^2','y(0)=0,Dy(0)=0');
t=0:
0.01:
5;
subplot(2,3,1);
ezplot(y,[05]);title('全响应');
subplot(2,3,2);
ezplot(yh,[05]);title('自由响应');
subplot(2,3,3);
ezplot(yp,[05]);title('强迫响应');
subplot(2,2,3);
ezplot(yzi,[05]);title('零输入响应');
subplot(2,2,4);
ezplot(yzs,[05]);title('零状态响应');
三、实验内容及步骤
下图所示为一RLC串联电路,已知R=5Ω,L=1H,C=(1/6)F,
1)请用matlab绘制出该系统的单位冲激响应和单位阶跃响应的波形;
2)当输入信号v(t)=0.5e-2t时,请画出该系统的零状态响应波形。
3)当电阻R分别为4Ω、2Ω、0.8Ω、0.4Ω时,观察他们的波形,并对波形变化做出解释。
四、实验报告要求
1,简述实验目的和实验原理。
2,按实验内容和步骤给出程序的源代码和运行结果,并对结果加以理论说明。
3,总结实验中的主要结论、收获和体会。