实验一 MATLAB 基本操作和绘图.docx
《实验一 MATLAB 基本操作和绘图.docx》由会员分享,可在线阅读,更多相关《实验一 MATLAB 基本操作和绘图.docx(14页珍藏版)》请在冰豆网上搜索。
实验一MATLAB基本操作和绘图
本科实验报告
课程名称:
信号与系统(乙)实验
姓名:
罗宇鹏
系:
工科试验班信息
专业:
光电信息工程
学号:
3120103549
指导教师:
吕俊张建国
2014年4月29日
实验报告
专业:
光电信息工程
姓名:
罗宇鹏
学号:
3120103549
日期:
2014.4.29
地点:
紫金港机房1
课程名称:
信号与系统(乙)实验指导老师:
吕俊张建国成绩:
______
实验名称:
MATLAB基本操作和绘图
=================================================================================
一、实验目的
1、熟悉MATLAB编程环境;
2、学习MATLAB的基本使用方法;
3、熟悉plot和stem等绘图函数的用法。
二、实验原理和内容
实验原理:
1.MATLAB简介:
MATLAB采用了全新的MATLAB是matrixlaboratory的缩写,是Mathworks公司开发的一款商业软件。
它是一种用于数值计算、算法开发、数据分析和可视化的高级编程语言和编程环境。
除向量和矩阵运算、绘制函数/数据图像等基本功能外,MATLAB也可用来创建图形用户界面(GUI),并可与其他高级语言(如C、C++和FORTRAN等)进行混合编程。
2.MATLAB的工作环境:
左边当前文件夹(CurrentFolder)窗口显示的是当前文件夹中的文件;中间是命令行窗口(CommandWindow),在“>>”提示符后输入命令,MATLAB便会执行相应的操作;右上工作区(Workspace)窗口显示的是MATLAB命令和程序生成的变量名及其数值;右下是CommandHistory窗口显示输入命令的历史记录。
所有这些窗口都可改变大小、浮动、关闭及重新打开。
3.当前文件夹和搜索路径:
通常在使用调用或执行这些文件之前需要确认或设置.m文件的搜索路径,告诉MATLAB在哪里搜索.m文件。
这一步骤可通过“File”菜单下选择“SetPath…”实现。
4.变量和.m文件的命名规则:
在MATLAB中变量和.m文件有相同的命名规则:
区分大小写,第一个字符必须为英文字符(不能为数字开头),不能超过31个字符,其他字符可以为英文字符、数字和下划线_,除此之外不能包含其他字符。
变量和.m文件的名字不能重名。
同时应尽量避免和MATLAB预定义的变量。
5.基本运算和函数:
使用MATLAB最大的好处是以往复杂的数学运算和编程可变得相对简单。
它缺省的数据格式为双精度浮点数的矩阵或数组,并且可以直接处理复数,同时会自动管理执行过程中变量使用内存的分配和回收,不需要额外的处理和编程。
6.MATLAB流程控制语句:
MATLAB提供了流程控制语句,用于控制程序执行的流程,其中比较常用的有:
if/elseif/else,switch/case/otherwise,while,for,end,break,continue,return等等。
7.MATLAB的绘图函数:
MATLAM提供了丰富的绘图函数可将数据绘制成各种图形,如曲线、直方图、极坐标图、等位线图、向量场图等。
在信号与系统实验中最常用的是plot函数和stem函数。
实验内容:
1.熟悉MATLAB软件的使用环境,掌握在MATLAB环境中输入、保存、运行和
调试程序的过程。
2.编写一个MATLAB脚本计算一个线性方程组
x−3y+3z=−4
2x+3y−z=15
4x−3y−z=19
的解。
3.取两个不同的间隔步长(如0.5和0.05,或者不同的坐标点数,如20点和200点),用plot函数画出sinc函数的波形。
要求用subplot将结果画在同一个绘图窗口中以便比较,并设定合适的坐标轴范围,同时添加坐标轴标注。
4.用MATLAB可以直接进行复数运算,但在显示信号时通常需要用模和相角、或者用实部和虚部来表示。
5.在MATLAB中离散时间实指数序列ak可简单地通过点幂运算。
6.在MATLAB中可用rectpuls和tripuls函数产生指定宽度和高度的矩形和三角脉冲。
分别取脉冲宽度τ=0.1和0.01,画出单位冲激信号δ(t)的近似波形。
三、
实验数据记录、处理和分析
1.熟悉MATLAB软件
(a)
实验说明:
利用rand产生(0,1)的随机数,fix(10*rand(1,3))和fix(10*rand(1,4))产生长度为3和4的随机个位整数向量,在通过conv(a,b)求a和b卷积和。
源程序:
>>a=fix(10*rand(1,3))
>>b=fix(10*rand(1,4))
>>c=conv(a,b)
结果:
a=[8,9,1];b=[9,6,0,2];c=[72,129,63,22,18,2]
两个长度分别为m和n的序列的卷积和的长度是m+n-1。
(b)
实验说明:
在NewScript中保存为.m格式,如图所示,命名为juan.m。
运行后结果:
卷积和:
c=[72,65,115,85,42,24]
(c)
源程序:
function[y,n]=conv_m(x,h)
y=conv(x,h)
n=length(y)
end
长度n=6
卷积和:
y=[0,48,110,119,87,27]
2.解线性方程组。
利用x=A\b:
实验说明:
解方程组Ax=b,只需要输入A矩阵,然后输入b矩阵,利用x=A\b就可以解除出方程。
源程序:
>>A=[1,-3,3;2,3,-1;4,-3,-1];
>>b=[-4;15;19];
>>x=A\b
结果:
x=[5;1;-2],即x=5,y=1,z=-2。
利用x=inv(A)*b:
源程序:
>>A=[1,-3,3;2,3,-1;4,-3,-1];
>>b=[-4;15;19];
>>x=inv(A)*b
结果:
x=5.0000,y=1.0000,z=-2.0000。
两种方法不同:
上述两种方法第一种采用左除运算解方程组,第二种采用求逆运算解方程组。
利用C语言解决此问题有三种方法,分别是迭代法,高斯列主元消去法,矩阵的三角分解法,三种方法因为都多次使用循环,代码量都需要100行左右,所以利用MATLAB解方程组极大简便计算。
3.抽样函数
实验说明:
先通过t=-10:
0.5:
10来在-10到10每隔0.5选取坐标点,通过subpolt来在同一个图像表示出来。
(a)>>helpsinc
>>docsinc
>>editsinc
获得MATLAB函数的在线帮助、联机文档和源代码。
(b)
波形:
4.复指数信号
(a)
直接用myexp(t,-0.2,5,1)调用:
用y=myexp(t,-0.2,5,1)调用:
(b)
n=3结果:
n=5结果:
n=7结果:
n→∞时,得到的信号是:
实部是方波,虚部是冲激函数。
5.离散时间实指数序列
结果:
6.单位冲激信号
产生方波脉冲源程序:
图像:
产生三角脉冲源程序:
图像:
四、讨论
实验心得体会:
通过本次实验,我对MATLAB的基础知识有了全面的了解,包括对MATLAB的使用环境,在MATLAB环境中输入、保存、运行和调试程序,在MATLAB中解线性方程组,以及用MATLAB来绘制图像。
在实验过程中,我们必须事先预习,并且因为实验内容量有点大,在课后时间我们必须抽时间进行。
在实验过程中,我们要一步步按照PDF上的步骤来,并且需要我们有足够耐心和细心,这个实验帮助我们更好为之后信号与系统学习起到很大的帮助。
对实验中遇到问题的思考:
1.变量和.m文件的名字不能重名。
2.避免和MATLAB预定义的变量(如pi,eps,ans,Inf,虚数单位i或j等)以及函数(如sin,cos,exp,log等)重名。
3.选择坐标范围要合适,不至于过大和过小。
4.为使结果精确,应使间隔步长取得尽可能小;但又不宜太小,以免计算量过大导致程序崩溃。
思考题
1.为什么在MATLAB中变量和.m文件的命名不能包含特殊字符,且.m文件不能以数字命名?
否则会出现什么情况?
答:
变量和.m文件的命名包含特殊字符MATLAB会无法识别;不能用数字命名,否则会在命令窗口返回命名的数字。
2.如本实验第3题(b)所示,在画连续信号的波形时,自变量t的间隔步长对画出波形的效果有很大的影响。
对于这个间隔步长,应作何考虑?
答:
为使结果精确,应使间隔步长取得尽可能小;但又不宜太小,以免计算量过大导致程序崩溃。
3.通过MATLAB生成图形后,如何得到高质量的输出,将生成的图形插入到实验报告中?
答:
可以通过截图工具。