实验一 产生信号波形的仿真实验.docx
- 文档编号:30029596
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:12
- 大小:84.53KB
实验一 产生信号波形的仿真实验.docx
《实验一 产生信号波形的仿真实验.docx》由会员分享,可在线阅读,更多相关《实验一 产生信号波形的仿真实验.docx(12页珍藏版)》请在冰豆网上搜索。
实验一产生信号波形的仿真实验
实验一产生信号波形的仿真实验
一、实验目的:
熟悉MATLAB软件的使用,并学会信号的表示和以及用MATLAB来产生信号并实现信号的可视化。
二、实验内容:
对信号进行时域分析,首先需要将信号随时间变化的规律用二维曲线表示出来。
对于简单信号可以通过手工绘制其波形,但对于复杂的信号,手工绘制信号波形显得十分困难,且难以绘制精确的曲线。
用MATLAB软件的信号处理工具箱(SignalProcessingToolbox)来产生并表示信号。
一种是用向量来表示信号,另一种则是用符合运算的方法来表示信号。
用适当的MATLAB语句表示信号后,可以利用MATLAB的绘图命令绘制出直观的信号波形。
产生以下信号波形
3sin(x)、5exp(-x)、sin(x)/x、1-2abs(x)/a、sqrt(a*x)
1.向量表示法
对于连续时间信号f(t),可以用两个行向量f和t来表示,其中向量t是形如t=t1:
p:
t2的MATLAB命令定义的时间范围向量,t1为信号起始时间,t2为信号终止时间,p为时间间隔。
向量f为连续信号f(t)在向量t所定义的时间点上的样值。
下面分析连续时间信号f(t)=Sa(t)=sin(t)/t,可用如下的两个变量表示:
t=-10:
1.5:
10
f=sin(t)./t
命令运行结果为:
t=
Columns1through8
-10.0000-8.5000-7.0000-5.5000-4.0000-2.5000-1.00000.5000
Columns9through14
2.00003.50005.00006.50008.00009.5000
f=
Columns1through8
-0.05440.09390.0939-0.1283-0.18920.23940.84150.9589
Columns9through14
0.4546-0.1002-0.19180.03310.1237-0.0079
用上述向量对连续信号进行表示后,就可以用plot命令来绘制出信号的时域波形。
plot命令可将点与点间用直线连接,当点与点间的距离很小时,绘出的波形就成了光滑的曲线。
MATLAB命令如下:
plot(t,f);
title(‘f(t)=Sa(t)’);
xlabel(‘t’);
axis([-10,10,-0.4,1.1]);
绘出的信号波形如图1所示(左图)。
当把时间间隔p取得更小(例如为0.02)时,就可得到Sa(t)较好的近似波形,如图1所示(右图)。
如图1Sa(t)的近似波形
用以下程序可产生正弦波:
t=0:
0.001:
50;
y=sin(2*pi*50*t);
plot(t(1:
50),y(1:
50));
用以下程序可产生加入随机噪声的正弦波:
t=0:
0.001:
50;
y=sin(2*pi*50*t);
s=y+randn(size(t));
plot(t(1:
50),s(1:
50));
用以下程序可产生周期方波:
t=0:
0.001:
2.5;
y=square(2*pi*30*t);
plot(t(1:
50),y(1:
50));
用以下程序可产生周期锯齿波:
t=0:
0.001:
2.5;
y=sawtooth(2*pi*30*t);
plot(t,y);
axis([00.2–11]);
用以下程序可产生sinc函数:
x=linspace(-5,5);
y=sinc(x);
plot(x,y);
用以下程序可产生Dirichlet函数:
x=linspace(0,4*pi,300);
y1=diric(x,7);
y2=diric(x,8);
subplot(1,2,1);plot(x,y1);
subplot(1,2,2);plot(x,y2);
2.符合运算表示法
如果信号可以用一个符号表达式来表示它,则我们可用ezplot命令(缺省的区间为[-2*pi,2*pi])绘制出信号的波形,例如对于连续信号f(t)=sin(πt/4),我们可以用符号表达式表示为:
f=sym(‘sin(pi/4*t)’);
f=sin(pi/4*t);
然后用ezplot命令绘制其波形:
ezplot(f,[-16,16]);
该命令绘制的信号波形如图2所示,
如图2正弦信号波形图
要求:
改用其它的信号来练习使用向量表示法和符号运算表示法来绘制信号波形,达到对两种方法的熟练掌握。
实验二连续时间信号卷积及MATLAB实现
一、实验目的:
熟悉使用MATLAB软件来分析连续时间信号的卷积积分运算并用图形可视化相关结果。
二、实验内容:
1.卷积积分
卷积积分在信号与线形系统分析中具有非常重要的意义,是信号与系统分析的基本方法之一。
连续时间信号f1(t)和f2(t)的卷积积分(简称为卷积)f(t)定义为:
由此可得到两个与卷积相关的重要结论,即是:
(1),即连续信号可分解为一系列幅度由决定的冲激信号及其平移信号之和;
(2)线形时不变连续系统,设其输入信号为,单位响应为,其零状态响应为,则有:
。
可见,连续信号卷积的计算对我们进行连续信号与系统的分析具有重要的意义。
用MATLAB实现连续信号与卷积的过程如下:
(1)将连续信号与以时间间隔Δ进行取样,得到离散序列和;
(2)构造与相对应的时间向量和;
(3)调用conv()函数计算卷积积分的近似向量;
(4)构造对应的时间向量k。
下面即是利用MATLAB实现连续时间卷积的通用函数sconv(),该程序在计算出卷积积分的数值近似的同时,还绘出的时域波形图。
需要注意的是,程序中是如何构造的对应时间向量k的?
另外,程序在绘制波形图时采用的是plot命令而不是stem命令。
function[f,k]=sconv(f1,f2,k1,k2,p)
%计算连续信号卷积积分f(t)=f1(t)*f2(t)
%f:
卷积积分f(t)对应的非零样值向量
%k:
f(t)的对应时间向量
%f1:
f1(t)非零样值向量
%f2:
f2(t)的非零样值向量
%k1:
f1(t)的对应时间向量
%k2:
f2(t)的对应时间向量
%p:
取样时间间隔
f=conv(f1,f2);%计算序列f1与f2的卷积和f
f=f*p;
k0=k1
(1)+k2
(1);%计算序列f非零样值的起点位置
k3=length(f1)+length(f2)-2;%计算卷积和f的非零样值的宽度
k=k0:
p:
k3*p;%确定卷积和f非零样值的时间向量
subplot(2,2,1)
plot(k1,f1)%在子图1绘f1(t)时域波形图
title('f1(t)')
xlabel('t')
ylabel('f1(t)')
subplot(2,2,2)
plot(k2,f2)%在子图2绘f2(t)时波形图
title('f2(t)')
xlabel('t')
ylabel('f2(t)')
subplot(2,2,3)
plot(k,f);%画卷积f(t)的时域波形
h=get(gca,'position');
h(3)=2.5*h(3);
set(gca,'position',h)%将第三个子图的横坐标范围扩为原来的2.5倍
title('f(t)=f1(t)*f2(t)')
xlabel('t')
ylabel('f(t)')
三、实验部分:
1.已知两连续时间信号如下图所示,试用MATLAB求f(t)=f1(t)*f2(t),并绘出f(t)的时域波形图。
(设定取样时间间隔为p)
◆参考程序:
p=0.5;
k1=0:
p:
2;
f1=0.5*k1;
k2=k1;
f2=f1;
[f,k]=sconv(f1,f2,k1,k2,p)
【实验思考】:
通过不断改变p的取值并对比所得到的实验效果,观察当取样时间p为多大时,函数sconv()的计算结果就是连续时间卷积f(t)=f1(t)*f2(t)的较好近似结果?
2.已知两连续时间信号如下图所示,试用MATLAB求f(t)=f1(t)*f2(t),并绘出f(t)的时域波形图。
(设定取样时间间隔为p)
◆参考程序:
p=0.1;
k1=-1:
p:
1
f1=2*ones(1,length(k1))
k2=-2:
p:
2
f2=ones(1,length(k2))
[f,k]=sconv(f1,f2,k1,k2,p)
【实验思考】:
通过不断改变p的取值并对比所得到的实验效果,观察当取样时间p为多大时,函数sconv()的计算结果就是连续时间卷积f(t)=f1(t)*f2(t)的较好近似结果?
实验三系统时域特性的仿真分析实验
一、实验目的:
通过使用MATLAB仿真软件对LTI系统的时域特性进行仿真分析对系统的冲激响应和零状态响应等有更深入的理解和掌握。
二、连续系统的冲激响应、阶跃响应及MATLAB实现
对于LTI连续系统,求解系统的冲激响应h(t)和阶跃响应g(t)对我们进行连续系统的分析具有非常重要的意义。
MATLAB为用户提供了专门用于求连续系统冲激响应和阶跃响应并绘制其时域波形的函数impulse()和step()。
在调用impulse()和step()函数时,我们需要用向量来对连续系统进行分析。
设描述连续系统的微分方程为:
则我们可用向量a和b来表示该系统,即:
a=[aN,aN-1,……a1,a0]
b=[bN,bN-1,……b1,b0]
注意,向量a和b的元素一定要以微分方程中时间求导的降幂次序来排列,且缺项要用0来补齐。
例如,对微分方程
,则表示该系统的对应向量应为a=[132],b=[101]。
1.impulse()函数
函数impulse()将绘出由向量a和b表示的连续系统在指定时间范围内的冲激响应h(t)的时域波形图,并能求出指定时间范围内冲激响应的数值解。
impulse()函数有如下几种调用格式:
(1)impulse(b,a):
该调用格式以默认方式绘出向量a和b定义的连续系统的冲激响应的时域波形。
例如描述连续系统的微分方程为
,运行如下MATLAB命令:
a=[156];
b=[32];
impulse(b,a);
则绘出系统的冲激响应波形,如图1所示。
如图1连续系统的冲激响应1
(2)impulse(b,a,t):
绘出系统在0~t时间范围内冲激响应的时域波形。
对上例,若运行命令impulse(b,a,10),则绘出系统在0~10秒范围内冲激响应的时域波形,如图2所示
如图2连续系统的冲激响应2
(3)impulse(b,a,t1:
p:
t2):
绘出在t1~t2时间范围内,且以时间间隔p均匀取样的冲激响应波形。
对上例,若运行命令impulse(b,a,1:
0.1:
2),则绘出1~2秒内,每隔0.1秒取样的冲激响应的时域波形,如图3所示
如图3连续系统的冲激响应3
(4)y=impulse(b,a,t1:
p:
t2):
不绘出波形,而是求出系统冲激响应的数值解。
对上例,若运行命令y=impulse(b,a,0:
0.2:
2),则运行结果为:
y=
3.0000
1.1604
0.3110
-0.0477
-0.1726
-0.1928
-0.1716
-0.1383
-0.1054
-0.0777
-0.0559
2.step()函数:
可绘出连续系统的阶跃响应g(t)在指定时间范围的时域波形并能求出其数值解,和impulse()函数一样,也有四种调用格式。
3.实验内容:
已知描述某连续系统的微分方程为:
试用MATLAB:
(1)绘出该系统在0~30秒范围内,并以时间间隔0.01秒取样的冲激响应和阶跃响应的时域波形;
(2)求出系统在0~30秒范围内,并以时间间隔0.01秒取样的冲激响应和阶跃响应的数值解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验一 产生信号波形的仿真实验 实验 产生 信号 波形 仿真