信号与系统实验教程学生版.docx
- 文档编号:6656510
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:38
- 大小:400.33KB
信号与系统实验教程学生版.docx
《信号与系统实验教程学生版.docx》由会员分享,可在线阅读,更多相关《信号与系统实验教程学生版.docx(38页珍藏版)》请在冰豆网上搜索。
信号与系统实验教程学生版
信号与系统
实验指导教程
长春工程学院电气与信息学院
二〇〇八年二月十日
目录
实验一信号的基本运算0
一、实验目的0
二、实验原理0
三、实验内容及步骤10
四、实验报告要求11
实验二周期信号的傅里叶级数及Gibbs现象11
一、实验目的11
二、实验原理及方法12
三、实验内容和要求17
四、实验报告要求19
实验三信号抽样及信号重建20
一、实验目的20
二、实验原理及方法20
三、实验内容及步骤26
四、实验报告要求27
实验四信号系统仿真28
一、实验目的28
二、实验原理28
三、实验内容及步骤32
四、实验报告要求33
实验一信号的基本运算
一、实验目的
1、熟悉掌握常用的用于信号与系统时域仿真分析的MATLAB函数。
2、掌握用MATLAB描述连续时间信号和离散时间信号的方法,能够编写MATLAB程序进行仿真。
3、熟悉实现各种信号的时域变换和运算的原理和方法,并在MATLAB环境下仿真。
4、利用延拓的方法将时限信号变成一个周期函数。
5、利用MATLAB的卷积工具实现两个信号的卷积运算。
二、实验原理
1、在《信号与系统》课程中,单位阶跃信号u(t)和单位冲激信号δ(t)是二个非常有用的信号。
它们的定义如下
1.1(a)
1.1(b)
这里分别给出相应的简单的产生单位冲激信号和单位阶跃信号的扩展函数。
产生单位冲激信号的扩展函数为:
functiony=delta(t)
dt=0.01;
y=(u(t)-u(t-dt))/dt;
产生单位阶跃信号的扩展函数为:
%Unitstepfunction
functiony=u(t)
y=(t>=0);%y=1fort>0,elsey=0
请将这二个MATLAB函数分别以delta和u为文件名保存在work文件夹中,以后,就可以像教材中的方法使用单位冲激信号δ(t)和单位阶跃信号u(t)。
2、离散时间单位阶跃信号u[n]定义为
1.2
离散时间单位阶跃信号u[n]除了也可以直接用前面给出的扩展函数来产生,还可以利用MATLAB内部函数ones(1,N)来实现。
这个函数类似于zeros(1,N),所不同的是它产生的矩阵的所有元素都为1。
值得注意的是,利用ones(1,N)来实现的单位阶跃序列并不是真正的单位阶跃序列,而是一个长度为N单位门(Gate)序列,也就是u[n]-u[n-N]。
但是在一个有限的图形窗口中,我们看到的还是一个单位阶跃序列。
3、信号的基本加法和乘法运算
信号f1与f2之和(瞬时和)是指同一瞬时两个信号之值对应相加所构成的“和信号”即f3=f1+f2;信号f1与f2之积是指同一瞬时两信号之值对应相乘所构成的“积信号”即f3=f1*f2;离散序列相加(或相乘)可采用对应样点的值分别相加(或相乘)的方法来计算。
用MATLAB程序仿真下面运算:
f1=sin(t),f2=sin(t),f3=f1+f2,f4=f1*f2;x=[011111],h=[213411],y=x+h,g=x.*h;
连续信号加法乘法实现程序
%Program
t=0:
0.01:
4*pi;
f1=sin(t);
f2=sin(t);
f3=f1+f2;
f4=f1.*f2;
subplot(221);
plot(t,f1);
title('f1signal');
subplot(222);
plot(t,f2);
title('f2signal');
subplot(223);
plot(t,f3);
title('f1+f2signal');
subplot(224);
plot(t,f4);
title('f1*f2signal');
运行后的结果:
图1-1程序运行结果图
离散序列加法乘法实现程序
x=[011111];
h=[213411];
y=x+h,g=x.*h;
subplot(221);
stem(x);
title('xsignal');
subplot(222);
stem(h);
title('hsignal');
subplot(223);
stem(y);
title('x+hsignal');
subplot(224);
stem(g);
title('x.*hsignal');
运行后的结果:
图1-2程序运行结果图
4、信号的时移
信号的时移可用下面的数学表达式来描述:
设一个连续时间信号为x(t),它的时移y(t)表示为:
y(t)=x(t-t0)1.3
其中,t0为位移量。
若t0为正数,则y(t)等于将x(t)右移t0秒之后的结果。
反之,若t0为负数,则y(t)等于将x(t)左移t0秒之后的结果。
在MATLAB中,时移运算与数学上习惯表达方法完全相同。
对给定一个连续时间信号x(t)=e-0.5tu(t),对它分别左移2秒钟和右移2秒钟得到信号x1(t)=e-0.5(t+2)u(t+2)和x2(t)=e-0.5(t-2)u(t-2)。
实现程序:
%Program
clear,closeall,
t=-5:
0.01:
5;
x=exp(-0.5*t).*u(t);%Generatetheoriginalsignalx(t)
x1=exp(-0.5*(t+2)).*u(t+2);%Shiftx(t)totheleftby2secondtogetx1(t)
x2=exp(-0.5*(t-2)).*u(t-2);%Shiftx(t)totherightby2secondtogetx2(t)
subplot(311)
plot(t,x)%Plotx(t)
gridon,
title('x=exp(-0.5*t).*u(t)')
subplot(312)
plot(t,x1)%Plotx1(t)
gridon,
title('x1=exp(-0.5*(t+2)).*u(t+2)')
subplot(313)
plot(t,x2)%Plotx2(t)
gridon,
title('x2=exp(-0.5*(t-2)).*u(t-2)')
xlabel('Timet(sec)')
程序运行结果:
图1-3程序运行结果图
注意:
在运行上面的程序时,一定在所在的路径下创建u(t)的子函数:
functiony=u(t)
y=(t>=0);%y=1fort>0,elsey=0
保存名为u.m
5、信号的时域翻转
对一个信号x[n]的翻转运算在数学上表示为
y[n]=x[-n]1.4
这种翻转运算,用MATLAB实现起来也是非常简单的。
有多种方法可以实现信号的翻转运算。
方法一,修改绘图函数plot(t,x)和stem(n,x)中的时间变量t和n,即用-t和-n替代原来的t和n,这样绘制出来的图形,看起来就是原信号经时域翻转后的版本。
方法二,直接利用原信号与其翻转信号的数学关系式来实现。
这种方法最符合信号翻转运算的实际意义。
方法三,使用MATLAB内部函数fliplr()来实现信号的翻转运算。
其用法如下:
y=fliplr(x):
其中x为原信号x(t)或x[n],而y则为x的时域翻转。
需要说明的是,函数fliplr()对信号作时域翻转,仅仅将信号中各个元素的次序作了一个反转,这种反转处理是独立于时间变量t和n的。
因此,如果信号与其时间变量能够用一个数学函数来表达的话,那么建议将时间变量t和n的范围指定在一个正负对称的时间区间即可。
分别编写程序实现m=sin(t);n=sin(-t);x[n]=[1234];x[-n],分析所画信号波形,
程序如下:
t=0:
0.01:
4*pi;
n=0:
1:
3;
m=sin(t);
x=[1234];
subplot(222);
plot(t,m);
title('sin(t)signal');
subplot(221);
plot(-t,m);
title('sin(-t)signal');
subplot(224);
stem(n,x);
title('x[n]signal');
subplot(223);
stem(-n,x);
title('x[-n]signal');
程序运行结果:
图1-4程序运行结果图
6、信号的时域尺度变换
信号x(t)的时域尺度变换在数学描述为
y(t)=x(at),1.5
其中a为任意常数。
根据a的不同取值,这种时域尺度变换对信号x(t)具有非常不同的影响。
当a=1时,y(t)=x(t);
当a=-1时,y(t)=x(-t),即y(t)可以通过将x(t)翻转运算而得到;
当a>1时,y(t)=x(at),y(t)是将x(t)在时间轴上的压缩而得到;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 系统 实验 教程 学生
![提示](https://static.bdocx.com/images/bang_tan.gif)