信号与系统实验1认识matlab环境.docx
《信号与系统实验1认识matlab环境.docx》由会员分享,可在线阅读,更多相关《信号与系统实验1认识matlab环境.docx(13页珍藏版)》请在冰豆网上搜索。
信号与系统实验1认识matlab环境
信号与系统实验1-认识matlab环境
洛阳理工学院
实验报告
科目:
班级:
姓名:
学号:
同组人:
日期:
成绩:
评语:
评阅教师:
实验一认识matlab工作环境及信号的绘制与运算
一.实验目的:
1.通过实验认识matlab软件及其工作环境。
2.掌握常见信号的绘制方法。
3.能对信号进行简单的运算并绘图。
二.实验设备:
1.装有matlab软件的计算机
三.实验内容:
1.向量表示法
MATLAB的信号处理工具箱有大量的函数可用于产生信号,这些函数中大部分都要求用矢量来表示时间,例如要产生一个在0-1秒的时间段上以5毫秒为抽样间隔的时间值矢量t,是用命令
t=0:
0.005:
1;
这个矢量包含每秒200个时间抽样点,或者说抽样频率为200Hz。
在MATLAB中,可以精确地表示离散时间信号,因为信号的值对应于矢量的各元素。
但是,MATLAB对连续时间信号只能提供近似表示,由各元素分别代表连续时间信号抽样值的一个矢量来近似。
当使用这种近似时,应该选择足够小的抽样间隔,以保证那些样本值能反映信号的全部细节。
例题1:
绘制图形
参考程序:
t=0:
0.5:
10;
f=exp(-.1*t).*sin(2/3*t);
plot(t,f);
grid
ylabel(‘f(t)’)
xlabel(‘Time(sec)’)
axis([030-11]);
将会显示波形如下图所示:
在这段程序中,绘制曲线时,时间坐标值作为元素保存在矢量中。
表达式exp(-.1*t)和sin(2/3*t)分别产生一个矢量,各矢量中的元素等于对应不同时间点处表达式的值。
由这两个表达式生成的两个矢量的对应元素相乘得到矢量,然后用plot命令绘出该信号的时域波形。
Plot命令可以将点与点间用直线连接,当点与点间的距离很小时,绘出的图形就成了光滑的曲线。
2.用MATLAB绘出单位阶跃信号的波形。
一种得到单位阶跃信号的方法是在MATLAB的SymbolicMathToolbox中调用单位阶跃函数Heaviside,这样可方便的表示出单位阶跃信号。
但是,在用函数ezplot实现其可视化时,就出现一个问题:
函数ezplot只能画出既存在于SymbolicMath工具箱中,又存在于总MATLAB工具箱中的函数,而Heaviside函数仅存在于SymbolicMathToolbox中,因此就需要在自己的工作目录work下创建Heaviside的M文件,该文件如下:
functionf=Heaviside(t)
f=(t>0)%t>0时f为1,否则为0
正确定义出该函数并保存运行后,就可以调用该函数了,如先定义向量:
t=0:
0.06:
2
然后调用Heaviside函数表示出该信号并绘出波形
f=heaviside(t)
plot(t,f)
axis([-1,3,-0.2,1.2])
得到波形如下图所示。
(2)另一种表示单位阶跃信号的方法是用向量f和t分别表示信号的样值和对应时刻值。
零时刻以前,信号样值为零,从零时刻起,信号样值为1,定义出这样的两个向量后,就可用plot命令绘出波形图了。
%t0时刻以前信号为零,在t0处有一跃变,以后为1
functionaiya(t1,t2,t0);
t=t1:
0.04:
-t0;
tt=-t0:
0.01:
t2;
n=length(t);
nn=length(tt);
u=zeros(1,n);
uu=ones(1,nn);
plot(tt,uu);
holdon
plot(t,u);
plot([-t0,-t0],[0,1]);
holdoff
title(‘单位阶跃信号’)
axis([t1,t2,-0.2,1.5])
调用函数jieyue绘制波形
aiya(-2,5,0)
3.符号运算的表示法
如前说述,MATLAB可以有两种方法来表示连续时间信号。
用这两种方法均可实现
连续信号的时域运算和变换,但用符号运算的方法则较为简便。
下面分别介绍各种运
算、变换的符号运算的MATLAB实现方法。
1).相加
s=symadd(f1,f2)或s=f1+f2
ezplot(s)
上面是用MATLAB的符号运算命令来表示两连续信号的相加,然后用ezplot命令绘制出其结果波形图。
其中f1,f2是两个用符号表达式表示的连续信号,s为相加得到的和信号的符号表达式。
2).相乘
w=symmul(f1,f2)或w=f1*f2
ezplot(w)
上面是用MATLAB的符号运算命令来表示两连续信号的相乘,然后用ezplot命令绘制出其结果波形图。
其中f1,f2是两个用符号表达式表示的连续信号,w为相乘得到的积信号表达式。
3).时移
y=subs(f,t,t-t0);
ezplot(y)
上面的命令是实现连续时间信号的平移及其结果的可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量,subs命令则将连续时间信号中的时间变量t用t-t0替换。
4).反褶
y=subs(f,t,-t);
ezplot(y)
上面的命令是实现连续时间信号的反褶及其结果的可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量。
5).尺度变换
y=subs(f,t,a*t);
ezplot(y)
上面的命令是实现连续时间信号的尺度变换及其结果的可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量。
4.练习题
1)绘制正弦信号、余弦信号、指数信号、符号信号抽样信号、三角脉冲信号、矩形波脉冲信号、三角波脉冲信号、周期方波、周期三角波。
Sin(x),cos(X),exp(x),sign(x),sinc(x),rectpuls(x,width),tripuls(x,width,skew),square(x,duty),sawtooth(x,width)
2)练习函数之间的各种运算。
3)t=-20:
0.05:
20;
4)width=1;9
5)skew=1;
6)duty=30;
7)f1=sign(t);
8)plot(t,f1);
9)图形如下
绘制的三角脉冲如下
t=-20:
0.05:
20;
width=1;9
skew=1;
duty=30;
f2=sinc(t);
plot(t,f2);
绘制三角脉冲如下
t=-20:
0.05:
20;
width=1;9
skew=1;
duty=30;
f3=tripuls(t,width,skew);
plot(t,f3);
绘制三角脉冲如下
t=-20:
0.05:
20;
width=1;9
skew=1;
duty=30;
f4=sawtooth(t,width);
plot(t,f4);
2)练习函数之间的各种运算。
函数间乘法程序
t=-10:
0.05:
10;
width=1;
skew=1;
duty=50;
f1=sin(t);
f2=cos(t);
plot(t,f1.*f2);
函数间乘法与加法程序
t=-10:
0.05:
10;
width=1;
skew=1;
duty=50;
f3=exp(t);
f4=sign(t);
f5=sinc(t);
plot(t,f3+f4.*f5)
3)解释程序。
symst
f=sym('(t/2+1)*(heaviside(t+2)-heaviside(t-2))')
subplot(2,3,1),ezplot(f,[-3,3])
title('f(t)')
y1=subs(f,t,t+2)
subplot(2,3,2),ezplot(y1,[-5,1])
title('f(t+2)')
y2=subs(f,t,t-2)
subplot(2,3,3),ezplot(y2,[-1,5])
title('f(t-2)')
y3=subs(f,t,-t)
subplot(2,3,4),ezplot(y3,[-3,3])
title('f(-t)')
y4=subs(f,t,2*t)
subplot(2,3,5),ezplot(y4,[-2,2])
title('f(2t)'
实验总结:
通过此次实验,我认识了matlab软件及其工作环境,掌握了常见信号的绘制方法,能对信号进行简单的运算并绘图。
实验中遇到了一些小错误和小失误,但是经过同学和老师的帮助以及自己的不懈努力,最终成功完成了实验。