MATLAB应用基础.doc_第1页
MATLAB应用基础.doc_第2页
MATLAB应用基础.doc_第3页
MATLAB应用基础.doc_第4页
MATLAB应用基础.doc_第5页
免费预览已结束,剩余23页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB简介在科学研究与工程应用过程中,人们往往会遇到大量繁重的数学运算和数值分析,传统的高级语言如FORTRAN、C等虽然能够在一定的程度上减轻运算量,但它们均要求应用人员具有较强的编程能力和对算法有深入的研究。此外,对大多数科学工作者而言,若要运用这些高级语言对计算结果进行可视化分析以及对计算的图形进行处理,也不是一件轻松的事情。 MATLAB正是在这一应用要求背景下产生的数学类科技应用软件。它具有强大的数值计算和图形可视化功能、简洁易学的工作环境和编程语言,从根本上满足了高校师生和科技人员对工程计算的要求,将他们从繁重的数学运算中解放出来,现已风靡世界,受到越来越多科技人员的喜爱和欢迎。1 MATLAB应用开发环境 1.1 命令窗口 点击桌面上的MATLAB图标,或点击“开始程序MATLAB组中的MATLAB程序项” ,即可运行MATLAB,出现的界面就是命令窗口(Command Window),其提示符为“”。 在命令窗口中,可以直接输入所编写的命令,然后按回车键运行。例如输入: x1 = sqrt(9), x2 = 5/x1, 按回车键后,命令窗口显示: x1 = 3 x2 = 1.66671.2 M文件 对于一些比较简单的问题,可从命令窗口中直接输入指令加以执行。但随着指令数的增加、控制流复杂度的增加,以及重复计算的要求,直接在命令窗口中进行计算就显得很烦琐。MATLAB提供的M文件很容易地解决了这个问题。 M文件实际上是由一系列MATLAB指令所构成的集合或程序文件,以“文件名.m”形式存放。文件名以英文字母开头,一般只能由英文字母、数字以及下划线符号“_”组成。在本讲义中所有的示范程序都是以M文件的形式给出;同学们在做实验时所编写的程序也必须以M文件形式存放。 M文件有两种形式:脚本文件(Script file)和函数文件(Function file)。下面通过例子说明。 示例1:脚本文件Ex_1x1 = 5;x2 = 6;x3 = 7;average_x = (x1+x2+x3)/3;运行Ex_1后,average_x等于6。 示例2:函数文件Averfunction y = Aver(x1,x2,x3)x1=input(x1=);x2=input(x2=);x3=input(x3=);y = (x1+x2+x3)/3;然后在主程序所在的脚本文件中或直接在命令窗口中执行: average_x = Aver(5,6,7), 或者先给x1,x2,x3赋值,再average_x = Aver(x1,x2,x3),得到同样的结果。 M文件的创建与保存: 1. 在命令窗口中点击工具栏“New M-File”按钮或者菜单“FileNewM-File”出现一个M文件编辑窗口(Editor),即创建了一个新的空白M文件; 2. 输入相应的内容后,点击编辑窗口(Editor)工具栏中的“Save”按钮或者菜单“FileSave” 即可保存。 M文件的运行: 1. 在命令窗口中点击“FileOpen”,选择M文件并打开; 2. 在该M文件的编辑窗口中点击菜单“DebugRun”;或直接在命令窗口中键入该M文件的文件名(如Ex_1,不要带.m后缀),按回车,即可运行该M文件。 1.3 MATLAB的文件管理 在编辑和运行M文件之前,还有一个很重要的工作要做,就是设置MATLAB的当前工作目录和搜索路径。MATLAB中的目录概念实际上就是文件夹,所有M文件都存放在某一目录中。 当前工作目录的设置 MATLAB的使用者首先要新建一个目录(既文件夹)用来专门存放自己所编制的M文件,包括脚本文件和函数文件;然后,再将该目录设置成当前工作目录,方法如下: 在命令窗口中右侧点击工具栏“Browse for folder”按钮,出现“浏览文件夹”选项,选中待确定为当前工作目录的文件夹,按“确定”即可。 将自己的文件夹设置成当前工作目录后,就可以在MATLAB中运行自己所编制的M文件了;也可以调用在搜索路径目录中所列出的所有文件夹中的M函数文件,这些M函数文件可以是MATLAB中其它工具箱中自带的,也可以是你的同学编制的。这样,就达到了资源共享的目的。 注意:你自己编制的M函数文件若不放在当前工作目录中,而单独另外放在一个文件夹中,只要将此文件夹设置为搜索路径,则你同样可调用这些M函数文件。 搜索路径的设置: 在命令窗口中点击菜单“FileSet Path”,在出现的界面左上角点击“Add Folder” 按钮,出现“浏览文件夹”选项,选择待加入搜索路径的的目录,按“确定”,再“Save”、“Close”即可。 1.4 其它 通过MATLAB的工作空间浏览器可以直观地查看MATLAB Workspace中包含的所有元素,这对于检查程序的运行状态、调试程序等是非常方便的。在命令窗口中点击菜单“DesktopWorkspace”,即出现Workspace界面,可以在其中查看内存变量的取值、维数等,也可以对变量做保存、删除等操作。 MATLAB还提供了强大的帮助系统。例如,点击工具栏“?”按钮,出现“help”界面,点击其中的“Search”按钮,在“Search for”框中输入所要查寻的关键字后回车,就能得到详细的帮助信息。 在命令窗口中点击菜单“HelpDemos”,再根据出现的界面做相应的选择,就可进入MATLAB自带的各种演示程序。这些演示程序对初学者是一个很好的学习工具,可以方便地在不同条件下完成算法的仿真,并显示形象的可视化结果。2 MATLAB基本运算 3.1 基本概念 变量: 和其他高级语言一样,MATLAB也是使用变量来保存信息。变量名由英文字母开头,一般只能由英文字母、数字以及下划线“_”组成。 矩阵: 矩阵是(Matrix)是MATLAB进行数据处理的基本单元,矩阵也经常与数组(Array)不加区分。MATLAB中的大部分运算或命令都是在矩阵运算的意义下执行的,矩阵运算是MATLAB最重要的运算。通常意义上的数量(也称为标量)在MATLAB系统中是作为11的矩阵来处理的。 1. 矩阵的输入 在命令窗口或M文件编辑窗口中直接输入a = 1,2,3; 4,5,6; 7,8,9 或a = 1 2 3; 4 5 6; 7 8 9 ,就可生成33矩阵a。 2. 利用MATLAB函数创建矩阵 MATLAB为用户提供了创建基本矩阵的函数,如 ones(m, n ):产生mn 全1矩阵; zeros(m, n):产生mn 全0矩阵。 向量: 向量实际也是一种矩阵,是仅有一行或者一列的矩阵;它在基于MATLAB的信号与系统分析中发挥着重要作用。除了利用前面介绍的创建矩阵的方法来生成向量外,下面再介绍两种常用的方法。 3. 利用冒号“:”运算生成向量 如: x = -2 : 4,则x = -2, -1, 0, 1, 2, 3, 4;又如:y = 0 : 0.2: 1, 则y = 0, 0.2, 0.4, 0.6, 0.8,1。 要特别注意的是向量中元素的序号是从1开始的,例如上面的x = -2, -1, 0, 1, 2, 3, 4 中,x(1) = -2, x(2) = -1, x(3) = 0等;在y = 0, 0.2, 0.4, 0.6, 0.8, 1 中,y(1) = 0, y(2) = 0.2等。 4. 利用linspace( )函数生成向量 linspace( )函数用于生成线性等分向量。调用格式x = linspace(m, n, s)表示生成从起始值m开始到终止值n之间的s个线性等分点的行向量。例如x = linspace(0, 10, 5),则x = 0, 2.5, 5, 7.5 10。 3.2 矩阵的算术运算 首先要说明的是在这里我们将矩阵视为数组,涉及运算的两个矩阵维数相同。在这个条件下,两个矩阵的加、减、乘、除均指的是两个矩阵相对应位置上的元素进行加、减、乘、除运算。例如设, , 则在MATLAB中四种运算的表示及结果为: , 注意:上面乘法运算符号“*”前要加“.” ,即这种矩阵乘法是一种点乘运算,它不同于线性代数中两个矩阵之间的所定义的乘法;在线性代数中要求A的列数与B的行数相同才能进行乘法运算,而这里仅要求A、B的维数相同。点乘运算是MATLAB所特有的,极大地简化了编程,要予以高度重视。同理,上面例子中的除法用的也是点除。 MATLAB还提供了点幂运算“.” ,如 ,则X . 3为另外,一个矩阵还可与一个数进行加、减、乘、除运算,其结果是该矩阵中的每一个元素与这个数进行相应的运算。如: ,则, 3.3 关系运算 MATLAB的基本关系运算符为:(大于), =(大于等于),=(小于等于), =(等于), =(不等于)。 关系运算的规则如下: 参与关系运算的是两个同维数矩阵;或者一个是矩阵,另一个是标量; 若参与运算的是两个矩阵,关系运算是将两个矩阵对应元素逐一进行关系比较,关系成立则比较结果值为“1”,否则为“0”,最终产生一个同维数矩阵,其元素值为“0”或“1” 。 若参与运算的一个是矩阵,另一个是标量,则是矩阵中每个元素与该标量进行关系比较,最终产生一个同维数矩阵,其元素值为“0”或“1” 。 例:,则 , , 3.4 逻辑运算 MATLAB的基本逻辑运算符为:&(与), (或), (非)。 逻辑运算的规则如下: 参与逻辑运算的是两个同维数矩阵;或者一个是矩阵,另一个是标量; 若参与运算的是两个矩阵,逻辑运算是将两个矩阵对应元素逐一进行逻辑运算,逻辑运算的结果是一个同维数矩阵,其元素值为“0”或“1” 。 若参与运算的一个是矩阵,另一个是标量,则是矩阵中每个元素与该标量进行逻辑运算,最终产生一个同维数矩阵,其元素值为“0”或“1” 。 例:, ,则 , 3.5 MATLAB的常用数学函数MATLAB提供了几乎所有初等函数,这些函数的调用格式为: 函数名(变量). 这里函数变量即是矩阵变量。 例如,X = sin(A),则表1列出了MATLAB中一些常用的数学函数名及其功能。 表1 MATLAB的常用数学函数 函数名 功能 函数名 功能 sin正弦函数 real求复变量的实部 cos余弦函数 imag求复变量的虚部 tan正切函数 conj求复变量的共轭 asin反正弦函数 pi圆周率 acos反余弦函数 i或j虚数单位 atan反正切函数 min求向量的最小元素 sincsinc函数 max求向量的最大元素 exp指数函数 length求向量的长度 log自然对数函数 size求矩阵的维数 Log1010为底的对数函数 sum求向量的所有元素之和 sqrt平方根函数 sum求向量的所有元素之和 abs求实变量绝对值或复变量的模 zeros产生零矩阵 angle求复数的相角 ones产生全部元素均为1的矩阵 3 MATLAB的可视化绘图 MATLAB不仅具有强大的数值运算功能,也同样具有非常强大的二维或三维绘图功能,尤其擅长与各种科学计算结果的可视化。计算的可视化可以将杂乱的数据通过图形来表示从中观察出其内在的关系。MATLAB的图形命令格式简单,可以使不同线性、色彩、数据点标记和标注等来修饰图形,也可以设计出图形用户界面,方便地进行人机交互。3.1 绘制二维图形的基本函数 1. plot函数 plot 命令是MATLAB中最常用而且使用最广泛的1个绘图命令,用来绘制二维曲线。语法:plot ( x, y) 功能:绘制二维曲线。其中x, y均为向量,该函数表示以x向量作为X轴,以y向量作为Y轴。 示例3:绘制从0 4范围的正弦函数曲线。 t = 0 : pi/20 : 4*pi;y = sin(t);plot(t, y);结果如图1所示。 图1用plot命令绘制多条曲线plot命令还可以同时绘制多条曲线,用多个矩阵对为参数,MATLAB自动以不同颜色绘制不同曲线。对每一对()均按照前面的方式解释,不同的矩阵之间,其维数可以不同。示例:绘制3条曲线。x= 0:0.1:2*pi;plot(x,sin(x),x,cos(x),x,sin(3*x);2. stem函数 对于离散序列,MATLAB用stem( )命令实现其绘制。绘图的方法和plot函数相似,但绘制出的是离散点的火柴杆图。 示例4:绘制从0 4范围的正弦函数序列。 t = 0 : pi/10 : 4*pi;y = sin(t);stem(t, y);结果如图2所示。 图23. subplot函数 如果要在一个绘图窗口中显示多个图形,可用subplot函数实现。语法:subplot(m, n, k) 或 subplot(m n k);说明:其中m, n, k取值为1 9。该函数表示将绘图窗口划分为mn个子窗口(子图),并在第k个子窗口中绘图(k是当前子图的编号,子图的序号编排原则是:左上方为第1幅,先向右后向下依次排列,子图彼此独立。在一个绘图窗口中绘制下列函数的图形。(a); (b) (c) ; (d) 程序:t = 0 : 0.1 : 2;y1 = 2*exp(-3*t); % (a) 指数函数 figure;subplot(221);plot(t,y1);xlabel(a);y2 = 2*t.*exp(-3*t); % (b) t乘指数函数 subplot(222);plot(t,y2);xlabel(b);t1 = -4 : 0.1 : 4;y3 = 1/(20.5)*exp(-0.5*t1.2); % (c) 正态分布函数 subplot(223);plot(t1,y3);xlabel(c);t2 = -5 : 0.1 : 5;y4 = sinc(t2); % (d) 取样函数 subplot(224);plot(t2,y4);xlabel(d);ylabel(sinc(t);axis(-5 5 -0.25 1.1)grid on结果如图3所示。图3注意:在图3的第4个子图中,我们加了xlabel、 ylabel、axis、grid on等绘图控制命令;这样,用户可根据自己的爱好和需要,对图形进行调整、注释和修饰,得到满意的图形。下面就这一问题做一简单的介绍。3.2二维图形的修饰 1. 坐标轴名称标识函数xlabel、 ylabel、title 调用格式:xlabel(string), ylabel(string), title(string)通过xlabel、ylabel命令给X轴、Y轴加上名称,标注为字符串string 。 title命令则是给图形加上标题。 2. 坐标轴调整函数axis 调用格式:axis( xmin xmax ymin ymax ) 该命令将所画图形的X轴范围限定在xmin到xmax之间,Y轴范围限定在ymin到ymax之间。3. 加画功能函数hold 若要在原来已有的图形A上加画另外的图形B,而不擦除原有的图形A,只要在画B之前加一条hold on 命令即可;否则原图形A会被B所覆盖。用hold off 可取消加画功能。4. 坐标网格函数grid grid函数用于为所绘制的图形添加坐标网格(虚线),从而更方便地确定图中各点的指标位置。grid on 是启动该函数;grid off是关闭该功能;MATLAB的缺省设置是grid off。 5. 曲线的色彩、线型、数据点形 通过在plot、stem函数中加样式控制参数,就可以改变所绘制图形的色彩、线型、数据点形,制作出样式丰富的各种图形。表2给出了常用样式控制参数设置值的含义。表2 常用样式控制参数设置值及其含义 线型符号-:-.-含义实 线虚 线点划线双划线色彩符号bgrcmykw含义蓝绿红青品红黄黑白数据点形 符号.+*dhpso含义实心黑点十字符八线符菱形符六角星五角星方块符空心圆 圈6. 在图形中加文本标注函数gtext(string) 当执行该命令时,在图中会出现一个十字形指针,用鼠标拖动到需要的地方,然后单击鼠标,即可将字符串添加到图形中。 说明:MATLAB中关于图形修饰的命令很丰富,限于篇幅,这里不再展开。如图例函数legend等。此外,还可通过一些精细指令设置,实现在图上标识希腊字、数学符等特殊字符,以及设置上下标、对字体或大小进行控制。 示例6:将下面三个图形绘制在一个图形窗口中:,。程序:x = 0:pi/10 :4*pi;plot(x,sin(x),r+:);hold on;y2 = 4*x.*exp(-x);plot(x,y2,m*-.);plot(x,sin(x)-0.5,bo-);legend(sin(x),4xexp(-x),sin(x)-0.5)axis(0 4*pi -1.6 1.6);title(示例6); gtext(正弦函数); gtext(指数函数);结果如图4所示。 图4小结:绘制图(二维图)的一般步骤(1)曲线数据准备。对于二维曲线,横坐标和纵坐标数据变量。(2)制定图形窗口和子图位置。默认时,打开Figure N0.1窗口或当前窗口、当前子图,也可以打开指定的图形窗口和子图。(3)设置曲线绘制方式。线性、色彩、数据点形。(4)设置坐标轴:坐标的范围、刻度和坐标分格。(5)图形注释。图名、坐标名、图例和文字说明。说明:步骤(1)和(3)是最基本的绘图步骤。步骤(2)一般在图形较多的情况下,需要指定图形和窗口、子图时使用。除了步骤(1)(2)(3)的其他步骤,用户可以根据自己的需要改变前后次序。4 常用信号的MATLAB表示 4.1单位冲激函数、单位冲激序列示例7:t = -5:0.01:5;y = (t=0);subplot(121);plot(t, y, r);n = -5:5;x = (n=0);subplot(122);stem(n, x);图5运行结果如图5所示。 程序说明: (1)由n = -5:5得到一个111数组n;而在x = (n= =0)中,n= =0是一个向量运算,即向量n中的每一个元素与0比较是否相等,其比较结果0或1放在x中。这样得到的向量x也是111数组,且正好就是单位冲激序列。 (2)在MATLAB中,任何向量x的下标是从1开始的,不能取零或负值,而x(n)中的时间变量n则不此受限制。因此向量x的下标与时间变量n是两个概念,如本例中向量x(n)的下标是从1到11,而时间变量n是从-5到5。所以必须用一个与向量x等长的定位时间变量n,以及向量x,才能完整地表示序列x(n)。在信号的表示和运算中,这一点请务必注意;只有当序列x(n)的时间变量正好是从1开始时,才能省去时间变量n,因为此时向量的下标与时间变量相同。 (3)单位冲激函数的实现方法实际上与单位冲激序列是完全相同的,都是用序列表示。只不过表示连续时间信号的序列中两相邻元素所对应的时间间隔更小,如本例中t的间隔为0.01,而表示离散时间信号的序列中两相邻元素所对应的时间间隔一般为1。 由于单位冲激序列在信号与系统中经常使用,我们专门编制一个函数文件delta.m,在后面的实验部分直接调用该函数即可产生需要的波形。 % delta.mfunction x, n = delta(n1,n2,k)% 产生冲激序列(n-k),其中n1=n=n 2, n1=k=n2 if nargin =3 %函数输入数模不等于3disp(输入不正确,输入参数要有三个!);return; %终止当前命令的执行,并且立即返回到上一级调用函数或等待键盘输入命令return命令也可以终止键盘方式。elseif (kn2)|(n1n2)error(输入不正确,输入参数要应满足n1=k=”,就可得到单位阶跃函数、单位冲激序列,如图6所示。 图6我们编制了函数文件stepseq.m来生成单位阶跃序列。 function x, n = stepseq(n1,n2,n0)% 产生序列u(n-n0),其中n1=n=n 2, n1=n0=n2if nargin =3disp(输入不正确,输入参数要有三个!);return;elseif (n0n2)|(n1n2)error(输入不正确,输入参数要应满足n1=k=0); 示例8:绘出下列函数的图形。(1) 门函数; (2) 序列。程序段:t = -3 :0.05: 3;z1 = (t+1) = 0);z2 = (t-1) = 0);g = z1 -z2; % 门函数 figure;subplot(221)plot(t,g,r);axis(-3 3 0 1.1)x1 = stepseq(-5,10,-3); % 调用函数stepseqx2 = stepseq(-5,10,5); % 调用函数stepseqx = x1 - x2;n = -5:10;subplot(222)stem(n,x);axis(-5,10,0,1.1)运行结果如图7所示。 图74.3其他典型的信号 1. 实指数信号其MATLAB实现为:n = n1: n2; x = a.n; 2. 复指数信号 其MATLAB实现为:n = n1: n2; x = exp(sigma+jw)*n; 3. 正(余)弦信号 其MATLAB实现为:n = n1: n2; x = cos(w*n+sita)4.4工具箱中的信号产生函数 利用MATLAB信号处理工具箱提供的一些函数,可以很方便地产生三角波、方波等函数波形。 周期性三角波或锯齿波函数sawtooth 调用格式为:x = sawtooth(t, width)功能:产生一个周期为2、幅度在-1到+1之间的周期性三角波信号。其中width表示最大幅度出现的位置:即在一个周期内,信号从t=0到width2时函数值从-1到+1线性增加,而从width2到2又是从+1到-1线性下降。width取值在0 1之间。 若x = sawtooth(t, width),则对应的周期为2/。 示例9:产生周期为0.2的三角波,width取值分别为0、1、0.5。 td = 1/100000; % td为时间间隔 t = 0 : td : 1;x1 = sawtooth(2*pi*5*t,0);x2 = sawtooth(2*pi*5*t,1);x3 = sawtooth(2*pi*5*t,0.5);subplot(311); plot(t,x1);subplot(312); plot(t,x2);subplot(313); plot(t,x3);运行结果如图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论