信号与系统仿真 模板.docx
- 文档编号:30516275
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:63
- 大小:370.50KB
信号与系统仿真 模板.docx
《信号与系统仿真 模板.docx》由会员分享,可在线阅读,更多相关《信号与系统仿真 模板.docx(63页珍藏版)》请在冰豆网上搜索。
信号与系统仿真模板
《信号与系统》
仿真实验报告
姓名:
学号:
班级:
实验一信号的产生与运算
一、实验目的
1、熟悉和掌握常用的用于信号与系统时域仿真分析的MATLAB函数。
2、掌握连续时间和离散时间信号的方法,能够编写MATLAB程序,实现各种信号的时域变换和运算,并且以图形的方式再现各种信号的波形。
二、实验原理
1.1连续时间信号的仿真
(1)Program1.1
clear,
closeall,
dt=0.01;
t=-2:
dt:
2;
x=sin(2*pi*t);
plot(t,x)
title('Sinusoidalsignalx(t)')
xlabel('Timet(sec)')
(2)单位阶跃信号u(t)和单位冲激信号δ(t)的定义
functiony=dalta(t);
dt=0.01;
y=(u(t)-u(t-dt))/dt;
functiony=u(t);
y=(t>=0);
1.2离散时间信号的仿真
Program1_2
clear,
closeall,
n=-10:
10;
x=sin(0.2*pi*n);
stem(n,x)
title('Sinusoidalsignalx[n]')
xlabel('Timeindexn')
Program1_3
clear,
closeall,
n=-5:
5;
x=[0,0,0,0,0.1,1.1,-1.2,0,1.3,0,0];
stem(n,x,'.')
gridon,
title('Adiscrete-timesequencex[n]')
xlabel('Timeindexn')
Program3实现了一个离散序列的产生的功能。
Program1_4
clear,
closeall,
n=-5:
5;
x=[zeros(1,4),0.1,1.1,-1.2,0,1.3,zeros(1,2)];
stem(n,x,'.')
gridon,
title('Adiscrete-timesequencex[n]')
xlabel('Timeindexn')
1.3信号的时雨变换
1.3.1信号的时移
Program1_5对给定的一个连续时间信号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)。
clear,closeall,
t=-5:
0.01:
5;
x=exp(-0.5*t).*u(t);
x1=exp(-0.5*(t+2)).*u(t+2);
x2=exp(-0.5*(t-2)).*u(t-2);
subplot(311)
plot(t,x)
gridon,
title('Originalsignalx(t)')
subplot(312)
plot(t,x1)
gridon,
title('Leftshiftedversionofx(t)')
subplot(313)
plot(t,x2)
gridon,
title('Rightshiftedversionofx(t)')
xlabel('Timet(sec)')
1.3.2信号的时域反褶
对一个信号x[n]的反褶运算在数学上表示为y[n]=x[-n]
对program1_5进行修改,得到第一个图反褶后的图像
clear,closeall,
t=-5:
0.01:
5;
x=exp(-0.5*t).*u(t);
x1=exp(-0.5*(t+2)).*u(t+2);
x2=exp(-0.5*(t-2)).*u(t-2);
x3=exp(-0.5*(t)).*u(t);
subplot(411)
plot(t,x)
gridon,
title('Originalsignalx(t)')
subplot(412)
plot(t,x1)
gridon,
title('Leftshiftedversionofx(t)')
subplot(413)
plot(t,x2)
gridon,
title('Rightshiftedversionofx(t)')
subplot(414)
plot(-t,x3)
gridon,
title('Inverseversionofx(t)')
xlabel('Timet(sec)')
从图像中可看到,图像4即为将图像1反褶后得到的图像。
三、操作练习
(一)基本信号的产生
1、产生阶跃信号的MATLAB程序如下:
t=-2:
0.02:
6;
x=(t>=0);
plot(t,x);
axis([-2,6,0,1.2]);
从上图可看出该图像符合阶跃函数的特征。
2、连续指数信号的产生
产生随时间衰减的指数信号的MATLAB程序如下:
t=0:
0.001:
5;
x=2*exp(-1*t);
plot(t,x);
3、连续正弦信号的产生
见program1_1
4、连续矩形脉冲信号的产生
函数rectpulse(t,w)可产生高度为1、宽度为4、延时2秒,关于t=0对称的矩形脉冲信号。
t=-2:
0.02:
6;
x=rectpuls(t-2,4);
plot(t,x);
将上面程序中的plot改为stairs后得到如下的图像:
t=-2:
0.02:
6;
x=rectpuls(t-2,4);
stairs(t,x);
5、连续周期矩形波信号的产生
产生一个幅度为1,基频为2Hz,占空比为50%的周期方波的MATLAB程序如下:
f0=2;
t=0:
.0001:
2.5;
w0=2*pi*f0;
y=square(w0*t,50);
stairs(t,y);
axis([0,2.5,-1.5,1.5]);
6、连续抽样信号的产生
t=-10:
1/500:
10;
x=sinc(t/pi);
plot(t,x);
7、单位脉冲序列的产生
k=-4:
20;
x=[zeros(1,7),1,zeros(1,17)];
stem(k,x);
8、单位阶跃序列的产生
k=-4:
20;
x=[zeros(1,7),ones(1,18)];
stem(k,x);
(二)信号的运算
1、加(减)、乘运算
要求两个信号序列长度相同
clear;
closeall;
t=0:
0.01:
2;
f1=exp(-3*t);
f2=0.2*sin(4*pi*t);
f3=f1+f2;
f4=f1.*f2;
subplot(2,2,1);plot(t,f1);title('f1(t)');
subplot(2,2,2);plot(t,f2);title('f2(t)');
subplot(2,2,3);plot(t,f3);title('f3(t)');
subplot(2,2,4);plot(t,f4);title('f4(t)');
其中图f3(t)为f1(t)与f2(t)相加后的图像,f4(t)为f1(t)与f2(t)相乘后的图像。
2、用matlab的符号函数实现信号的反褶、移位、尺度变换
f(t)=sin(t)/t,通过反褶、尺度变换由f(t)的波形得到f(-2t+3)的波形。
clear;
closeall;
symst;
f=sym('sin(t)/t');
f1=subs(f,t,t+3);
f2=subs(f1,t,t*2);
f3=subs(f2,t,-t);
subplot(2,2,1);ezplot(f,[-8,8]);gridon;
subplot(2,2,2);ezplot(f1,[-8,8]);gridon;
subplot(2,2,3);ezplot(f2,[-8,8]);gridon;
subplot(2,2,4);ezplot(f3,[-8,8]);gridon;
四、自编程序
Q1_1修改program1_1,产生实指数信号x(t)=e-2t.
clear;
closeall;
dt=0.01;
t=-2:
dt:
2;
x=exp(-2*t);
plot(t,x);
title('sinusoidalsingalx(t)');
xlabel('timet(sec)');
gridon;
axis([0,2,0,2]);
Q1_2修改程序program1_1,使之能够仿真从键盘上任意输入的一个连续时间信号,并利用该程序仿真信号x(t)=e-2t
修改后的程序如下:
clear,closeall,
t=-5:
0.01:
5;
x=input('Typeinsignalx(t)inclosedform:
'
plot(t,x)
gridon,
title('Originalsignalx(t)')
当在窗口中输入x(t)=e-2t后,便会得到和上图一样的图像
Q1_3根据示例程序的编程方法,编写一个MATLAB程序,由给定信号x(t)=e-0.5tu(t),求信号y(t)=x(1.5t+3),并绘制出x(t)和y(t)的图形。
clear,closeall,
t=-5:
0.01:
5;
x=exp(-0.5*t).*u(t);
y=exp(-0.5*(1.5*t+3)).*u(1.5*t+3);
subplot(211)
plot(t,x)
gridon,
title('Originalsignalx(t)')
subplot(212)
plot(t,y)
gridon,
title('Generatedsignaly(t)')
xlabel('Timet(sec)')
Q1_4给定一个离散的时间信号x[n]=u[n]-u[n-8],仿照示例程序program1_5,编写程序,产生x[n]的左移序列x1[n]=x[n+6]和右移序列x2[n]=x[n-6],并在同一个图形窗口的三个子图中分别绘制这三个序列的图形。
编程如下:
clear,closeall,
n=-20:
20;
x=u(n)-u(n-8);
x1=u(n+6)-u(n-2);
x2=u(n-6)-u(n-14);
subplot(311)
stem(n,x,'.')
gridon,
title('Originalsignalx[n]')
subplot(312)
stem(n,x1,'.')
gridon,
title('Leftshiftedversionofx[n]')
subplot(313)
stem(n,x2,'.')
gridon,
title('Rightshiftedversionofx[n]')
Q1_5
1、信号与系统分析,就是给予信号的分解,在时域中,信号主要分解成:
分解成一些常用的基本信号,如:
阶跃信号、脉冲信号、指数信号、正弦信号和周期矩形波信号等。
2、比较plot,stem,stairs,ezplot命令的区别
Plot是连续函数的绘图命令
Stem是离散函数的绘图命令
Stairs是阶梯式函数的绘图命令
Ezplot是符号函数绘图命令
实验二连续时间系统的时域分析
一、实验目的
1、加深对线性时不变系统中零状态响应的概念的理解,掌握其求解方法;
2、掌握给定连续系统的冲激响应和阶跃响应。
3、牢固掌握系统的单位冲激响应的概念,掌握LTI系统的卷积表达式及其物理意义,掌握卷积的计算方法、卷积的基本性质;
4、掌握利用MATLAB计算卷积的编程方法,并利用所编写的MATLAB程序求解LTI系统响应,绘制相应曲线。
二、实验原理
编写程序,计算并绘制由下面的微分方程表示的系统的单位冲激响应h(t),单位阶跃响应s(t)。
解法一:
num=[8,0];
den=[1,3,2,0];
T=0:
0.1:
3;
y1=impulse(num,den,T);
y2=step(num,den,T);
U=sin(T);
y3=lsim(num,den,U,T);
subplot(2,2,1);plot(T,y1);title('impulseresponse')
subplot(2,2,2);plot(T,y2);title('stepresponse')
subplot(2,2,3);plot(T,y3);title('lsimresponse')
解法二:
clear,closeall;
num=input('Typeintheleftcoefficientvectorofdifferentialequation:
');
den=input('Typeintheleftcoefficientvectorofdifferentialequation:
');
t=0:
0.01:
8;
x=input('Typeintheexpressionoftheinputsignalx(t):
');
subplot(221),impulse(num,den,T);
subplot(222),step(num,den,T)
3卷积的计算
根据给定的两个连续时间信号x(t)=t[u(t)-u(t-1)]和h(t)=u(t)-u(t-1),编写程序,完成这两个信号的卷积运算,并绘制它们的波形图。
clear;closeall;
t0=-2;t1=4;dt=0.01;
t=t0:
dt:
t1;
x=u(t)-u(t-1);
h=t.*(u(t)-u(t-1));
y=dt*conv(x,h);
subplot(221)
plot(t,x),gridon,title('Signalx(t)'),axis([t0,t1,-0.2,1.2])
subplot(222)
plot(t,h),gridon,title('Signalh(t)'),axis([t0,t1,-0.2,1.2])
subplot(212)
t=2*t0:
dt:
2*t1;
plot(t,y),gridon,title('Theconvolutionofx(t)andh(t)'),axis([2*t0,2*t1,-0.1,0.6]),
xlabel('Timetsec')
三、实验内容
Q2_1:
仿照program2_1,编写程序,计算并绘制由如下微分方程表示的系统在输入信号为x(t)=(e-2t-e-3t)u(t)时的零状态响应曲线。
编程如下:
num=[8,0];
den=[1,3,2,0];
T=0:
0.1:
3;
U=(exp(-2*T)-exp(-3*T)).*u(T);
y1=lsim(num,den,U,T);
plot(T,y1);title('lsimresponse')
Q2_2:
仿照program2_2,给定下面两个连续信号,求两连续信号的卷积。
f1(t)=2[u(t)-u(t-4)]f2(t)=u(t)-u(t-2)
编程如下:
clear;closeall;
t0=-2;t1=8;dt=0.01;
t=t0:
dt:
t1;
f1=2*(u(t)-u(t-4));
f2=u(t)-u(t-2);
y=dt*conv(f1,f2);
subplot(221)
plot(t,f1),gridon,title('Signalx(t)'),axis([t0,t1,-0.2,3])
subplot(222)
plot(t,f2),gridon,title('Signalh(t)'),axis([t0,t1,-0.2,3])
subplot(212)
t=2*t0:
dt:
2*t1;
plot(t,y),gridon,title('Theconvolutionofx(t)andh(t)'),axis([2*t0,2*t1,-0.1,5]),
xlabel('Timetsec')
Q2_3:
编写程序,使之能够接受以键盘方式输入的定义在不同时间段的两个不同连续时间信号并完成卷积运算,分别绘制这两个信号及其卷积的结果图形
clear;closeall;
t0=-2;t1=8;dt=0.01;
t=t0:
dt:
t1;
f1=input('Typeintheexpressionoftheinputsignalf1(t):
');
f2=input('Typeintheexpressionoftheinputsignalf2(t):
');
y=dt*conv(f1,f2);
subplot(221)
plot(t,f1),gridon,title('Signalf1(t)'),axis([t0,t1,-0.2,3])
subplot(222)
plot(t,f2),gridon,title('Signalf2(t)'),axis([t0,t1,-0.2,3])
subplot(223)
t=2*t0:
dt:
2*t1;
plot(t,y),gridon,title('Theconvolutionoff1(t)andf2(t)'),axis([2*t0,2*t1,-0.1,5]),
xlabel('Timetsec')
Typeintheexpressionoftheinputsignalf1(t):
2*(u(t)-u(t-4))
Typeintheexpressionoftheinputsignalf2(t):
u(t)-u(t-2)
当输入的函数仍未Q2_3中的函数时,等到的图像与上问中的一样,只是被分成了4块。
实验三连续时间系统的频谱-傅里叶变换
一、实验目的
1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法;
2、观察截短傅里叶级数而产生的“Gibbs现象”,了解其特点以及产生的原因;
3、掌握连续时间傅里叶变换的分析方法及其物理意义;
4、掌握各种典型的连续时间非周期信号的频谱特征以及傅里叶变换的主要性质;
5、学习掌握利用MATLAB语言编写计算CTFS、CTFT和DTFT的仿真程序,并能利用这掌握利用MATLAB编程完成相关的傅里叶变换的计算。
二、实验原理及方法
1、连续时间周期信号的傅里叶级数CTFS分析
三角傅里叶级数为:
或:
指数形式的傅里叶级数为:
2、连续时间信号傅里叶变换——CTFT
傅里叶变换在信号分析中具有非常重要的意义,它主要是用来进行信号的频谱分析的。
傅里叶变换和其逆变换定义如下:
3、傅里叶级数的MATLAB计算
例题:
给定一个周期为T1=2s的连续时间周期方波信号,起一个周期内的数学表达式为:
X(t)=10= 11 在MATLAB命令窗口,依次键入: k=-10: 10; ak=((-1j).^k).*(sin((k+eps)*pi/2)./((k+eps)*pi)) ak= Columns1through3 -0.00000+0.0354i-0.0000 Columns4through6 0+0.0455i-0.00000+0.0637i Columns7through9 -0.00000+0.1061i-0.0000 Columns10through12 0+0.3183i0.50000-0.3183i Columns13through15 -0.00000-0.1061i-0.0000 Columns16through18 0-0.0637i-0.00000-0.0455i Columns19through21 -0.00000-0.0354i-0.0000 subplot(221) stem(k,abs(ak),'k.') title('TheFourierseriescoefficients') xlabel('Frequencyindexk') 以上是我们通过手工计算得到的这个周期信号的傅里叶级数表达式及其频谱图,下面给出完成傅里叶级数系数计算的相应MATLAB范例程序 clear,closeall T=2;dt=0.000001;t=-2: dt: 2; x1=u(t)-u(t-1-dt);x=0; form=-1: 1 x=x+u(t-m*T)-u(t-1-m*T-dt); end w0=2*pi/T; N=10; L=2*N+1; fork=-N: N; ak(N+1+k)=(1/T)*x1*exp(-1j*k*w0*t')*dt; end phi=angle(ak); 在命令窗口键入 ak 命令窗口就可以显示傅里叶级数的21个系数: ak= Columns1through3 0.0000-0.0000i-0.0000+0.0354i0.0000-0.0000i Columns4through6 -0.0000+0.0455i0.0000+0.0000i-0.0000+0.0637i Columns7through9 0.0000-0.0000i-0.0000+0.1061i0.0000+0.0000i Columns10through12 -0.0000+0.3183i0.5000-0.0000-0.3183i Columns13through15 0.0000-0.0000i-0.0000-0.1061i0.0000+0.0000i Columns16through18 -0.0000-0.0637i0.0000-0.0000i-0.0000-0.0455i Columns19through21 0.0000+0.0000i-0.0000-0.0354i0.0000+0.0000i 实验四连续时间系统的频域分析 一、实验目的 1、掌握系统频率响应特性的概念及其物理意义; 2、掌握系统频率响应特性的计算方法和特性曲线的绘制发法; 3、学习和掌握幅度特性、相位特性的物理意义; 4、掌握用MATLAB语言进行系统频率响应特性分析的方法; 5、进一步理解信号的抽样及抽样定理。 二、实验原理及方法 1.用MATLAB计算系统频率响应 假设给定一个连续时间LTI系统,下面的微分方程描述其输入输出之间的关系: 编写范例程序,绘制系统的幅度响应特性、相位响应特性、频率响应的实部和频率响应的虚部,程序如下: b=[1]; a=[132]; [H,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号与系统仿真 模板 信号 系统 仿真