信号与系统实验教案李欣.docx
- 文档编号:4275407
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:25
- 大小:145.06KB
信号与系统实验教案李欣.docx
《信号与系统实验教案李欣.docx》由会员分享,可在线阅读,更多相关《信号与系统实验教案李欣.docx(25页珍藏版)》请在冰豆网上搜索。
信号与系统实验教案李欣
实验项目名称:
实验一连续时间信号与系统时域分析的MATLAB仿真
教学目的要求
1.熟悉MATLAB的运行环境及基本操作命令;
2.掌握连续时间信号的实现、时域基本运算、卷积运算,以及连续时间系统的时域分析,分析运行结果;
3.掌握实现实现时域运算的函数的调用;
4.通过matlab仿真加深对信号与系统时域分析的理解。
教学时数:
2学时,均为实验课时,本实验为验证性实验
教学内容与方法:
教学内容:
实验软件的基本操作和使用方法。
对一些典型连续信号的时域运算(加减乘除,微积分,尺度,反折,移位)的仿
真实现。
编程完成卷积运算。
调用相应的函数实现系统的时域分析(冲激响应,阶跃相应,零状态相应,零输
入相应的求解)。
对实验结果进行分析,并与理论分析结果做对比,加深对理论内容的理解。
教学方法:
先对软件的使用做演示操作,并编例程进行讲解,到每个学生处监督其实验操作
情况。
教学后记:
检查预习报告的完成情况。
作业布置:
完成实验报告的书写。
实验一连续时间信号与系统时域分析的MATLAB仿真
(2学时,验证性实验)
一.实验目的
1.熟悉MATLAB的运行环境及基本操作命令;
2.掌握连续时间信号的实现、时域基本运算、卷积运算,以及连续时间系统的时域分析,分析运行结果;
3.掌握实现实现时域运算的函数的调用;
4.通过matlab仿真加深对信号与系统时域分析的理解。
二.基本操作与仪器介绍
1.仪器:
英特尔586配置以上电脑一台,内存512MB以上,windowsxp操作系统。
软件:
MATLAB
2.基本操作:
1)、启动电脑;2)、打开MATLAB编程软件;3)、编写程序;4)、调试运行程序;5)、记录结果。
三.实验内容
1.实现冲激信号,阶跃信号,正弦信号,指数信号,复指数信号
2.实现信号四则基本运算,时移,翻折,尺度变换运算
3.实现系统单位冲激响应,单位阶跃响应,零状态响应,零输入响应的求解
四.实验内容及步骤
1.启动MATLAB软件,新建M文件。
2.基本连续信号的实现。
(1)单位阶跃信号
单位阶跃信是信号分析的基本信号之一,在信号与系统分析中有着十分重要的作用,常用于简化信号的时域表示。
根据单位阶跃信号的特性,我们可以用它来表示时限信号和单边信号(因果信号)。
一种得到单位阶跃信号的方法是在MATLAB的SymbolicMathToolbox中调用单位阶跃函数Heaviside,这样可方便地表示出单位阶跃信号。
但是,在用函数ezplot实现其可视化时,就出现一个问题:
函数ezplot只能画出既存在于SymbolicMath工具箱中,又存在于总MATLAB工具箱中的函数,而Heaviside函数仅存在SymbolicMathToolbox中,因此就需要在自己的工作目录work下创建Heaviside的M文件,该文件如下:
functionf=Heaviside(t)
f=(t>0);%t>0时f为一,否则为零
正确定义出该函数并保存运行后,就可调用该函数了。
如先定义向量:
t=-1:
0.01:
3
然后调用Heaviside函数表示出该信号并绘出波形
f=heaviside(t);
plot(t,f);
axis([-1,3,-0.2,1.2]);
得到波形如图1-1所示。
图1-1单位阶跃信号
(2)单位冲激信号
严格说来MATLAB是不能表示单位冲击信号的,但我们可用时间宽度为dt,高度为1/dt的矩形脉冲来近似地表示冲击信号。
当dt趋近于零时,就较好地近似出冲击信号的实际波形。
下面是绘制单位冲击信号及其在时间轴上的平移信号的MATLAB子程序,其中t1,t2表示信号的起始时刻,t0表示信号沿坐标的平移量,t0>时向左平移,t0<0时向右平移。
绘图命令用stairs,该命一般用于绘制类似楼梯形状的步进图形,在这里使用该命令是因为显示连续信号中的不连续点用stairs命令绘图效果较好。
functionchongji(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;%在时间t=-t0处,给样本点赋值为1/dt
stairs(t,x);
axis([t1,t2,0,1.2/dt])
title('单位冲击信号δ(t)')
下面就调用chongji函数绘制d(t),-1≤t≤5的波形
MATLAB调用命令为:
chongji(-1,5,0)
图1-2单位冲激信号
程序执行后,MATLAB自动画出如图1-2所示的波形。
(3)指数信号
用MATLAB命令绘制单边指数信号
在时间
区间的波形。
解:
我们可用两向量f和t来表示信号,用plot命令绘制其波形,具体命令如下:
t=0:
0.05:
3;
f=exp(-1.5*t);
plot(t,f)
axis([0,3,0,1.2])
title('单边指数信号')
text(3.1,0.05,'t')
程序执行后,产生如图1-3所示的波形。
图1-3单边指数信号
(4)正弦信号
f=sym('3*sin((w)*t)');
f1=subs(f,'w','pi/2');
ezplot(f1,[0,4*pi]);
f2=subs(f,'w','pi');
ezplot(f2,[0,4*pi]);
f3=subs(f,'w','3*pi/2');
ezplot(f3,[0,4*pi]);
绘制的正弦信号时域波形如图1-4所示。
图1-4正弦信号时域波形
2.信号的基本运算
信号f(t)=(1+t/2)[u(t+2)-u(t-2)],绘出f(t-2),f(-t),f(2t),-f(t)的时域波形。
根据前面的介绍,我们可用符号运算来实现上述过程,MATLAB命令如下:
symst;
f=sym('(t/2+1)*(heaviside(t+2)-heaviside(t-2))');
subplot(2,3,1),ezplot(f,[-3,3]);
y1=subs(f,t,t+2);
subplot(2,3,2),ezplot(y1,[-5,1]);
y2=subs(f,t,t-2);
subplot(2,3,3),ezplot(y2,[-1,5]);
y3=subs(f,t,-t);
subplot(2,3,4),ezplot(y3,[-3,3]);
y4=subs(f,t,2*t);
subplot(2,3,5),ezplot(y4,[-2,2]);
y5=-f;
subplot(2,3,6),ezplot(y5,[-3,3]);
命令执行后得到f,y1,y2,y3,y4,y5的符号表达式如下:
f=(t/2+1)*(heaviside(t+2)-heaviside(t-2))
y1=(1/2*t+2)*(heaviside(t+4)-heaviside(t))
y2=1/2*t*(heaviside(t)-heaviside(t-4))
y3=(-1/2*t+1)*(heaviside(-t+2)-heaviside(-t-2))
y4=(t+1)*(heaviside(2*t+2)-heaviside(2*t-2))
y5=-(1/2*t+1)*(heaviside(t+2)-heaviside(t-2))
3.卷积计算
连续时间信号如图1-5所示,试用MATLAB求f1(t),f2(t)的卷积,并绘出卷积结果的时域波形图。
图1-5f1(t),f2(t)的波形
实现上述过程的MATLAB命令如下:
p=0.01;
k1=0:
p:
2;
f1=0.5*k1;
k2=k1;
f2=f1;
[f,k]=sconv(f1,f2,k1,k2,p)
4.系统响应求解
(1)单位冲激响应和单位阶跃响应求解
系统微分方程为:
求单位冲激响应。
a=[236];
b=[1];
impulse(b,a);
Step(b,a);
(2)零状态响应的求解
系统的微分方程为:
,求零状态响应。
a=[121];
b=[12];
p=0.5;%定义取样时间间隔
t=0:
p:
5;%定义时间范围
x=exp(-2*t);%定义输入信号
lsim(b,a,x,t);%对系统输出信号进行仿真
Lsim()函数的调用
五.实验中应注意事项
1.求解响应的各函数的使用,求卷积运算的函数;
2.注意编写程序的过程中要求全部为英文下输入;
3.调试修改程序后,一定要重新编译链接才能查看结果。
六.实验思考题
1.还有哪些方法可以实现单位阶跃信号和冲激信号。
2.ezplot和plot有什么区别。
3.MATLAB中实现卷积运算和理论分析中的卷积运算有什么区别。
实验后记:
注意对MATLAB的使用方法做简要说明
实验项目名称:
实验二连续时间系统频域分析的MATALAB仿真
教学目的要求
1.掌握连续时间信号与系统的频域分析方法,从频域的角度对信号与系统的特性进行理解;
2.掌握连续时间信号傅里叶变换与傅里叶逆变换的实现方法;
3.掌握连续时间傅里叶变换的数值计算方法及绘制信号频谱的方法,并实现信号的采样、调制和解调;
4.通过实验深入理解理论课中的频域分析的概念。
教学时数:
2学时,均为实验课时,本实验为设计性实验
教学内容与方法:
教学内容:
实现对典型信号的FST和FT,观察信号频域特性。
对一些典型连续信号实现采样,调制和解调的处理。
对实验结果进行分析,并与理论分析结果做对比,加深对理论内容的理解。
教学方法:
先对软件的使用做演示操作,并编例程进行讲解,到每个学生处监督其实验操作
情况。
教学后记:
检查预习报告的完成情况。
作业布置:
完成实验报告的书写。
实验二连续时间系统频域分析的MATLAB仿真
(2学时,设计性实验)
一.实验目的
1.掌握连续时间信号与系统的频域分析方法,从频域的角度对信号与系统的特性进;
2.掌握连续时间信号傅里叶变换与傅里叶逆变换的实现方法;
3.掌握连续时间傅里叶变换的数值计算方法及绘制信号频谱的方法,并实现信号的采样、调制和解调;
4.通过实验深入理解理论课中的频域分析的概念。
二.基本操作与仪器介绍
1.仪器:
英特尔586配置以上电脑一台,内存512MB以上,windowsxp操作系统。
软件:
MATLAB
2.基本操作:
1)、启动电脑;2)、打开MATLAB编程软件;3)、编写程序;4)、调试运行程序;5)、记录结果。
三.实验内容
1.实现连续周期信号的傅立叶级数展开(CTFS),完成周期矩形脉冲信号的傅立叶级数展开。
2.用数值法、符号法实现常用信号的傅里叶变换和傅里叶逆变换,并给出幅频特性曲线和相频特性曲线。
3.已知输入信号、载波频率、采样频率,产生输入信号的调相信号、调频信号和调幅信号。
四.设计提示
1.将连续周期信号展开成傅立叶技术的MATLAB代码如下:
[CTFShchsym.m]
function[A_sym,B_sym]=CTFShchsym
%采用符号计算法求一个周期内连续时间函数的三角级数展开系数,并绘出前七次
%谐波合成波形.
%函数的输出是数值量
%a被展开函数的时间区间的左端
%Nf=6谐波的阶数
%Nn输出数据的准确位数
%A_sym第1元素是直流项,其后元素依次是1,2,3...次
%谐波cos项展开系数
%B_sym第2,3,4,...元素依次是1,2,3...次谐波sin项展开系数
%tao=1tao/T=0.2
symstnkx
T=5;tao=0.2*T;a=0.5;
ifnargin<4;Nf=6;end
ifnargin<5;Nn=32;end
x=time_fun_x(t);%调用符号变量写成的周期矩形脉冲
A0=2*int(x,t,-a,T-a)/T;%求出三角函数展开系数A0
As=int(2*x*cos(2*pi*n*t/T)/T,t,-a,T-a);%求出三角函数展开系数As
Bs=int(2*x*sin(2*pi*n*t/T)/T,t,-a,T-a);%求出三角函数展开系数Bs
A_sym
(1)=double(vpa(A0,Nn));
%获取串数组A0所对应的ASC2码数值数组
fork=1:
Nf
A_sym(k+1)=double(vpa(subs(As,n,k),Nn));
B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));
%获取串数组B所对应的ASCⅡ码数值数组
end
ifnargout==0
c=A_sym;disp(c)%输出c为三角级数展开系数:
第1元素是直流项,
%其后元素依次是1,2,3...次谐波cos项展开系数
d=B_sym;disp(d)%输出d为三角级数展开系数:
第2,3,4,...元素
%依次是1,2,3...次谐波sin项展开系数
t=-8*a:
0.01:
T-a;
f1=0.2/2+0.1871.*cos(2*pi*1*t/5)+0.*sin(2*pi*1*t/5);%基波
f2=0.1514.*cos(2*pi*2*t/5)+0.*sin(2*pi*2*t/5);%2次谐波
f3=0.1009.*cos(2*pi*3*t/5)+0.*sin(2*pi*3*t/5);%3次谐波
f4=0.0468.*cos(2*pi*4*t/5)+0.*sin(2*pi*4*t/5);%4次谐波
f5=-0.0312.*cos(2*pi*6*t/5)+0.*sin(2*pi*6*t/5);%6次谐波
f6=f1+f2;%基波+2次谐波
f7=f6+f3;%基波+2次谐波+3次谐波
f8=f7+f4+f5;%基波+2次谐波+3次谐波+4次谐波+6次谐波
subplot(2,2,1);
plot(t,f1);holdon;
y=time_fun_e%调用符号函数写成的连续时间函数-周期矩形脉冲
plot(t,y);
title('周期矩形波的形成—基波');
subplot(2,2,2);
plot(t,f6),holdon;
y=time_fun_e;
plot(t,y);
title('周期矩形波的形成—基波+2次谐波');
subplot(2,2,3);
plot(t,f7);holdon;
y=time_fun_e;
plot(t,y);
title('周期矩形波的形成—基波+2次谐波+3次谐波');
subplot(2,2,4);
plot(t,f8);holdon;
y=time_fun_e;
plot(t,y);
title('周期矩形波的形成—基波+2次谐波+3次谐波+4次谐波+6次谐波');
end
%-------------------------------------------
functionx=time_fun_x(t);
%该函数是CTFShchsym.m的子函数。
它由符号变量和表达式写成。
h=1;
x1=sym('Heaviside(t+0.5)')*h;
x=x1-sym('Heaviside(t-0.5)')*h;
%-------------------------------------------
functiony=time_fun_e
%该函数是CTFShchsym.m的子函数,它形成周期矩形脉冲
a=0.5;T=5;h=1;tao=0.2*T;t=-8*a:
0.01:
T-a;
e1=1/2+1/2.*sign(t+tao/2);
e2=1/2+1/2.*sign(t-tao/2);
y=h.*(e1-e2);%连续时间函数-周期矩形脉冲
编写函数文件CTFStpshsym.m
[CTFStpshsym.m]
function[A_sym,B_sym]=CTFStpshsym
%采用符号计算求[0,T]内时间函数的三角级数展开系数,并绘制其双边频谱。
%函数的输出为数值量
%Nn输出数据的准确位数
%A_sym第1元素是直流项,其后元素依次是1,2,3...次谐波cos项展开系数
%B_sym第2,3,4,...元素依次是1,2,3...次谐波sin项展开系数
%TT=m*tao,信号周期
%Nf谐波的阶数
%Nn输出数据的准确位数
%m(m=T/tao)周期与脉冲宽度之比,如m=4,8,16,100等
%tao脉宽:
tao=T/m
symstny
ifnargin<3;Nf=input('pleasInput所需展开的最高谐波次数:
Nf=');end
T=input('pleasInput信号的周期T=');
ifnargin<5;Nn=32;end
y=time_fun_s(t);
A0=2*int(y,t,0,T)/T;
As=int(2*y*cos(2*pi*n*t/T)/T,t,0,T);
Bs=int(2*y*sin(2*pi*n*t/T)/T,t,0,T);
A_sym
(1)=double(vpa(A0,Nn));
fork=1:
Nf
A_sym(k+1)=double(vpa(subs(As,n,k),Nn));
B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));end
ifnargout==0
S1=fliplr(A_sym)%对A_sym阵左右对称交换
S1(1,k+1)=A_sym
(1)%A_sym的1*k阵扩展为1*(k+1)阵
S2=fliplr(1/2*S1)%对扩展后的S1阵左右对称交换回原位置
S3=fliplr(1/2*B_sym)%对B_sym阵左右对称交换
S3(1,k+1)=0%B_sym的1*k阵扩展为1*(k+1)阵
S4=fliplr(S3)%对扩展后的S3阵左右对称交换回原位置
S5=S2-i*S4;%用三角函数展开系数A、B值合成付里叶指数系数
S6=fliplr(S5);
N=Nf*2*pi/T;
k2=-N:
2*pi/T:
N;
S7=[S6,S5(2:
end)];%形成-N:
N的付里叶复指数对称系数
subplot(3,3,3)
x=time_fun_e%调用连续时间函数-周期矩形脉冲
subplot(3,1,3)
stem(k2,abs(S7));%画出周期矩形脉冲的频谱(T=M*tao)
title('连续时间函数周期矩形脉冲的双边幅度谱')
axis([-80,80,0,0.12])
line([-80,80],[0,0])
line([0,0],[0,0.12])
end
%-------------------------------------------
functiony=time_fun_s(t)
%该函数是CTFStpshsym.m的子函数。
它由符号变量和表达式写成。
symsaa1
T=input('pleasInput信号的周期T=');
M=input('周期与脉冲宽度之比M=');
A=1;tao=T/M;a=tao/2;
y1=sym('Heaviside(t+a1)')*A;
y=y1-sym('Heaviside(t-a1)')*A;
y=subs(y,a1,a);
y=simple(y);
%------------------------------
functionx=time_fun_e
%该函数是CTFStpshsym.m的子函数,它形成周期矩形脉冲。
%t是时间数组
%T是周期duty=tao/T=0.2
T=5;t=-2*T:
0.01:
2*T;tao=T/5;
x=rectpuls(t,1);%产生一个宽度tao=1的矩形脉冲
subplot(2,2,2)
plot(t,x)
holdon
x=rectpuls(t-5,1);%产生一个宽度tao=1的矩形脉冲,中心位置在t=5处
plot(t,x)
holdon
x=rectpuls(t+5,1);%产生一个宽度tao=1的矩形脉冲,中心位置在t=-5处
plot(t,x)
title('周期为T=5,脉宽tao=1的矩形脉冲')
axis([-10,10,0,1.2])
2.非周期信号频谱,幅频特性,相频特性
vFourier变换
(1)F=fourier(f)
(2)F=fourier(f,v)
(3)F=fourier(f,u,v)
vFourier逆变换
(1)f=ifourier(F)
(2)f-ifourier(F,u)
(3)f=ifourier(F,v,u)
说明
(1)f=ifourier(F)是函数F的Fourier逆变换。
缺省的独立变量为ω,缺省返回是关于x的函数。
如果F=F(x),则ifourier返回关于t的函数。
(2)f=ifourier(F,u)返回函数f是u的函数,而不是缺省的x的函数。
(3)f=ifourier(F,v,u)对关于v的函数F进行变换,返回关于u的函数f。
注意:
在调用函数fourier()及ifourier()之前,要用syms命令对所用到的变量(如t、u、v、w)等进行说明,即要将这些变量说明成符号变量。
对fourier()中的函数f及ifourier()的函数F,也要用符号定义符sym将f或F说明为符号表达式;若f或F是MATLAB中的通用函数表达式,则不必用sym加以说明。
以下举例说明如何调用该函数来实现傅里叶变换。
命令文件如下:
symstvwx;%生成符号表达式;
x=1/2*exp(-2*t)*sym('Heaviside(t)');
F=fourier(x);
subplot(211);
ezplot(x);
subplot(212);
ezplot(abs(F));
3.采样定理及调幅
MATLAB提供了专门的函数modulate()用于实现信号的调制。
调用格式为:
y=modulate(x,Fc,Fs,'method')
[y,t]=modulate(x,Fc,Fs)
在下面的MATLAB的实现的程序中,为了观察f(t)及y(t)的频谱,在这里介绍一个MATLAB的“信号处理工具箱函数”中的估计信号的功率谱密度函数psd(),其格式是:
[Px,f]=psd(x,Nfft,Fs,window,noverlap,dflag)
用MATLAB完成本例的程序如下:
Fs=1000;%被调信号x的采样频率
Fc=400;%载波信号的载波频率
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 系统 实验 教案