《Matlab及其应用》讲义精品资料.doc

上传人:封****n 文档编号:96698310 上传时间:2024-03-10 格式:DOC 页数:64 大小:305KB
返回 下载 相关 举报
《Matlab及其应用》讲义精品资料.doc_第1页
第1页 / 共64页
《Matlab及其应用》讲义精品资料.doc_第2页
第2页 / 共64页
点击查看更多>>
资源描述

《《Matlab及其应用》讲义精品资料.doc》由会员分享,可在线阅读,更多相关《《Matlab及其应用》讲义精品资料.doc(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Matlab及其应用讲义杜华强浙江林学院环境科技学院第一讲 MATLAB系统概述第一节 MATLAB语言概述一、MATLAB语言的发展 matlab语言是由美国的Clever Moler博士于1980年开发的 设计者的初衷是为解决“线性代数”课程的矩阵运算问题 取名MATLAB即Matrix Laboratory 矩阵实验室的意思Matlab(Matrix Laboratory)是美国MathWork公司于1982年推出的一套高性能的数值计算和可视化软件,它集成数值分析、矩阵运算、信号图像处理和图像图形显示于一体。矩阵运算的方便快捷性;程序编写的简洁、简单性;图形图像显示的优美性;加上Matl

2、ab本身很强的开放性和适应性以及图形用户界面(GUI)生成的方便性和扩充的灵活性,使得Matlab倍受青睐,大大节省了科研工作者的时间和精力,成为当前国内外科研人员以及大专院校学生争相学习的大众化软件。自1982年 MathWork公司推出第一版本以来,目前的版本已到7.0以上,其功能更加完善,极大的方便了各种科学计算以及不同领域应用程序的开发。2、MATLAB语言简介Matlab最受青睐的应该是其语言的强大功能。Matlab语言简化、集成了自然科学和社会科学中众多算法,许多复杂的计算过程在Matlab中往往仅需要几条命令或命令组合便可以完成。Matlab语言是一种解释性的语言,其语言中变量的

3、基本单位是矩阵,变量的赋值语法为变量表达式。对于变量,在Matlab中有全局变量(很少用)和局部变量(经常)两种类型,变量的数据类型包括字符变量和数值变量两种基本类型;在程序编写过程中变量不需要提前定义,往往根据程序编写的需要随时定义。它将一个优秀软件的易用性与可靠性、通用性与专业性 、一般目的的应用与高深的科学技术应用有机的相结合MATLAB是一种直译式的高级语言,比其它程序设计语言容易MATLAB已经不仅仅是一个“矩阵实验室”了,它集科学计算、图象处理;声音处理于一身,并提供了丰富的Windows图形界面设计方法MATLAB语言是功能强大的计算机高级语言, 它以超群的风格与性能风靡全世界,

4、 成功地应用于各工程学科的研究领域MATLAB在美国已经作为大学工科学生必修的计算机语言之一 (C, FORTRAN, ASSEMBLER, MATLAB)近年来,MATLAB语言已在我国推广使用,现在已应用于各学科研究部门和许多高等院校MATLAB语言不受计算机硬件的影响,286以上的计算机都可以使用二、matlab能在各领域做什麽 工业研究与开发 数学教学,特别是线性代数 数值分析和科学计算方面的教学与研究 电子学、控制理论和物理学等工程和科学 学科方面的教学与研究 经济学、化学和生物学等计算问题的所有其他领域中的教学与研究举例x,y=meshgrid(1:.1:20);z=cos(x).

5、*sin(y);figure,surf(x,y,z)shading interpfigure,contour(x,y,z,10)X0,Y0,Z0=sphere(30);X=2*X0;Y=2*Y0;Z=2*Z0;surf(X0,Y0,Z0);shading interphold on,mesh(X,Y,Z),colormap(hot),hold offhidden offaxis equal,axis off t=linspace(0,2*pi,100); r=1-exp(-t/2).*cos(4*t);X,Y,Z=cylinder(r,60);ii=find(X0&Y大于 =大于等于小于 4

6、tf= a=b tf= b-(a2) tf= (a4) tf= (a2)&(a=0).*y; % 将 sin(x) 的负值设为零 z=z + 0.5*(y0); % 再将上式的值加上0.5 z=(x8).*z; % 将大于 x=8 以后的值设为零 hold on plot(x,z) xlabel(x),ylabel(z=f(x) title(A discontinuous signal) hold off4 函数(1)内部函数(2)专用函数(工具箱)(3)用户自己定义的函数函数的嵌套 如sqrt(log(z)多输入、多输出函数 x1,x2=ffjie(a,b,c);5表达式:变量、数值、函数用

7、操作符连接起来,就构成了表达式a=(1+sqrt(10)/2b=abs(3+5i)c=sin(exp(-2.3);d=pi*aA=3 9 5;B=2 1 5;C1=A./B.2C2=(A./B).22.2矩阵基础MATLAB的运算事实上是以阵列 (array) 及矩阵 (matrix) 方式在做运算,而这二者在MATLAB的基本运算性质不同,阵列强调元素对元素的运算,而矩阵则采用线性代数的运算方式。1输入矩阵(1)直接输入(2)外部调用(3)内部产生x = 1 2 3 % 一维 1x3 阵列 dx=x(end:-1:1) % 将x倒序排列 x = 1 2 3; 4 5 6 % 二维 2x3 矩

8、阵,以;区隔各列的元素 x=1:3;4:6;7:9load lx1.txt; lx1a=eye(3);b=ones(2,5);c=zeros(3,3);d=rand(2,3);e=magic(3)2矩阵转置x3矩阵元素求和(行、列、总和)sum(x);sum(x,2);sum(sum(x);sum(x(:)sum(diag(x);4矩阵的下标(1)矩阵元素的访问(下标的引用)b=x(1,2)+x(2,3);双下标访问注意:矩阵元素的存储是按列顺序存储的,因此可以通过单变量下标来访问矩阵元素b=x(4)+x(8);(2)矩阵元素的修改x(2,3)=15;x(2,1:3)=5 10 15(3)超过

9、矩阵的维数会提示出错5矩阵的连接a=1 2;3 4b=a a+5;a-5 zeros(size(a)c=a;5 10d1=a a a;a a a 可以用下面的操作完成d2=repmat(a,2,3)6 矩阵的行列删除b(2,:)=;b(2,:)=b(1,2)=(对吗?)b(4)=7 矩阵信息的获取(1)length 返回矩阵最长方向的长度(2)ndims 返回矩阵的维数(3)numel 返回矩阵的元素个数(4)size 返回矩阵的行列数2.3 矩阵的产生和操作(矩阵结构的改变)1 矩阵的产生(1)单位矩阵的产生A=eye(5);B=eye(2,3)C=eye(4,6);(2) 1矩阵的产生A=

10、ones(5)B=ones(3,2)C=1 2 3;4 5 6;7 8 9;10 11 12;C1=ones(size(C)(3)0矩阵的产生A=zeros(5)B=zeros(3,2)C=1 2 3;4 5 6;7 8 9;10 11 12;C1=zeros(size(C)(3)对角矩阵的产生A=7 5 3B1=diag(A)B1=diag(A,1)主对角线上B2=diag(A,-1) 主对角线下(4)产生均匀分布(正态)的随机矩阵 A=rand(5,5)B=randn(5,5) C=randn(1000,1);figure,hist(c)D=rand(1000,1);figure, his

11、t(D)(5)时间和日期datenow; datestr(now)Clock; fix(clock)calendar(2007,3)%日历2 矩阵的操作(1)rot90 矩阵逆时针旋转90度A=1:3:10;2:3:11;3:3:12Ra=rot90(A)(2)以竖直(水平)方向为轴做镜像A=1:3:10;2:3:11;3:3:12fav=fliplr(A)fah=flipud(A)(3)矩阵重新排列rea=reshape(A,2,6)%矩阵按列顺序存储第三讲 Matlab 图形系统(数据可视化)Matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言

12、所不能比拟的。matlab语言的绘图功能 不仅能绘制几乎所有的标准图形,而且其表现形式也是丰富多样的。 matlab语言不仅具有高层绘图能力,而且还具有底层绘图能力句柄绘图方法。 在面向对象的图形设计基础上,使得用户可以用来开发各专业的专用图形。一、二维绘图(一)plot 最基本的二维图形指令plot的功能: plot命令自动打开一个图形窗口Figure 用直线连接相邻两数据点来绘制图形根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把x, y 轴用对数坐标表示如果已经存在一个图形窗口,plot命令则清除当前图形,绘制新图形可单窗口单曲线绘图;可单窗口

13、多曲线绘图;可单窗口多曲线分图绘图;可多窗口绘图可任意设定曲线颜色和线型可给图形加坐标网线和图形加注功能plot的调用格式 plot(x) 缺省自变量绘图格式,x为向量, 以x元素值为纵坐标,以相应元素下标为横坐标绘图 plot(x,y) 基本格式,以y(x)的函数关系作出直角坐标图,如果y为nm的矩阵,则以x 为自变量,作出m条曲线plot(x1,y1,x2,y2) 多条曲线绘图格式 plot(x,y,s) 开关格式,开关量字符串s设定曲线颜色和绘图方式,使用颜色字符串的前13个字母,如 yellowyel表示等。或plot(x1,y1,s1,x2,y2,s2,)S的标准设定值如下: 字母

14、颜色 标点 线型 y 黄色 点线 m 粉红 圈线 c 亮蓝 线 r 大红 字线 g 绿色 实线 b 蓝色 * 星形线 w 白色 : 虚线 k 黑色 (-) 点划线1. 单窗口单曲线绘图例1:x=0, 0.48,0.84,1,0.91,0.6,0.14 x1, x2, x3, x4, x5, x6, x7,plot (x)2. 单窗口多曲线绘图例2:t=0:pi/100:2*pi;y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);plot(t,y,t,y1,t,y2)例 3:y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);y3=cos(t);

15、y4=cos(t+0.25);y5=cos(t+0.5);plot(t,y,y1,y2,y3,y4,y5)y3=cos(t);y4=cos(t+0.25);y5=cos(t+0.5);plot(t,y3);hold on; plot(t,y4); plot(t,y5);3. 单窗口多曲线分图绘图subplot 子图分割命令调用格式: subplot(m,n,p) 按从左至右,从上至下排列 subplot(1,3,1); plot(t,y)subplot(1,3,2); plot(t,y3)subplot(1,3,3); plot(t,y2)subplot(3,1,1);plot(t,y)sub

16、plot(3,1,2);plot(t,y3)subplot(3,1,3);plot(t,y2)subplot(position,left bottom width height)4. 多窗口绘图 figure(n) 创建窗口函数,n为窗口顺序号。t=0:pi/100:2*pi;y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);plot(t,y) 自动出现第一个窗口figure(2)plot(t,y1) 在第二窗口绘图figure(3)plot(t,y2) 在第三窗口绘图5.可任意设置颜色与线型例 4(例2):plot(t,y,r-,t,y1,g:,t,y2,b*)6.

17、图形加注功能将标题、坐标轴标记、网格线及文字注释加注到图形上,这些函数为: title 给图形加标题 xlable 给x轴加标注 ylable 给y轴加标注 text 在图形指定位置加标注 gtext 将标注加到图形任意位置 grid on(off) 打开、关闭坐标网格线 legend 添加图例 axis 控制坐标轴的刻度例:t=0:0.1:10y1=sin(t);y2=cos(t);plot(t,y1,r,t,y2,b-);x=1.7*pi;1.6*pi;y=-0.3;0.8;s=sin(t);cos(t);text(x,y,s);title(正弦和余弦曲线);legend(正弦,余弦)xl

18、abel(时间t),ylabel(正弦、余弦)gridaxis squareaxis的用法还有: axis(xmin xmax ymin ymax) 用行向量中给出的值设定坐标轴的最大和最小值。 如axis (-2 2 0 5) axis(equal) 将两坐标轴设为相等 axis on(off) 显示和关闭坐标轴的标记、标志 axis auto 将坐标轴设置返回自动缺省值7.fplot 绘制函数图函数fplot 的 调用格式:fplot(fun,lims) 绘制函数fun在x区间lims=xmin xmax的函数图。 fplot(fun,lims,corline) 以指定线形绘图。x,y=f

19、plot(fun,lims) 只返回绘图点的值, 而不绘图。用plot(x,y) 来绘图。fplot(sin(x),tan(x),cos(x),2*pi*-1 1 -1 1)fplot(humps,0 1,rp)8.ezplot 符号函数的简易绘图函数ezplot的调用格式:ezplot(f) 这里f为包含单个符号变量x的符号表达式,在x轴的默认范围 -2*pi 2*pi内绘制f(x)的函数图ezplot(f,xmin,xmax) 给定区间ezplot(f,xmin,xmax,figure(n) 指定绘图窗口绘图。ezplot(sin(x)ezplot(sin(x),cos(y),-4*pi

20、4*pi,figure(2)(二) fill 基本二维绘图函数 fill的功能:绘制二维多边形并填充颜色例:x=1 2 3 4 5;y=4 1 5 1 4;fill(x,y,r) (三)特殊二维绘图函数 bar 绘制直方图 polar 绘制极坐标图 hist 绘制统计直方图 stairs 绘制阶梯图 stem 绘制火柴杆图 rose 绘制统计扇形图 comet 绘制彗星曲线 errorbar 绘制误差棒图 compass 复数向量图(罗盘图) feather 复数向量投影图(羽毛图) quiver 向量场图 area 区域图 pie 饼图 convhull 凸壳图 scatter 离散点图例:

21、阶梯绘图h2=1 1;1 -1;h4=h2 h2;h2 -h2;h8=h4 h4;h4 -h4;t=1:8;subplot(8,1,1);stairs(t,h8(1,:);axis(off)subplot(8,1,2);stairs(t,h8(2,:);axis(off)subplot(8,1,3);stairs(t,h8(3,:);axis(off)subplot(8,1,4);stairs(t,h8(4,:);axis(off)subplot(8,1,5);stairs(t,h8(5,:);axis(off)subplot(8,1,6);stairs(t,h8(6,:);axis(off)

22、subplot(8,1,7);stairs(t,h8(7,:);axis(off)subplot(8,1,8);stairs(t,h8(8,:);axis(off)h2=1 1;1 -1;h4=h2 h2;h2 -h2;h8=h4 h4;h4 -h4;t=1:8;for i=1:8subplot(8,1,i);stairs(t,h8(i,:)axis(off)end例:绘制极坐标绘图t=0:2*pi/90:2*pi;y=cos(4*t);polar(t,y)x=magic(6);area(x)x=1 2 3 4 5 6 7;pie(x, 0 0 0 1 0 0 0)pie(x,y,North,

23、South,East,West,middle,fa,white)load seamountscatter(x,y,50,z)a=rand(200,1);b=rand(200,1);c=rand(200,1);scatter(a,b,100,c,p)二、三维绘图三维绘图的主要功能: 绘制三维线图 绘制等高线图 绘制伪彩色图 绘制三维网线图 绘制三维曲面图、柱面图和球面图 绘制三维多面体并填充颜色(一)三维线图plot3 基本的三维图形指令调用格式:plot3(x,y,z) x,y,z是长度相同的向量plot3(X,Y,Z) X,Y,Z是维数相同的矩阵plot3(x,y,z,s) 带开关量plot

24、3(x1,y1,z1,s1, x2,y2,z2,s2, )二维图形的所有基本特性对三维图形全都适用。定义三维坐标轴大小 axis(xmin xmax ymin ymax zmin zmax ) grid on(off) 绘制三维网格 text(x,y,z,string) 三维图形标注 子图和多窗口也可以用到三维图形中例:绘制三维线图t=0:pi/50:10*pi;plot3(t,sin(t),cos(t),r:)(二) 三维饼图pie3(4 3 6 8 9)(三)三维多边形fill3 = fill 三维多边形的绘制和填色与二维多边形完全相同调用格式: fill3(x,y,z,s) 与二维相同例

25、: 用随机顶点坐标画出5个粉色的三角形,并用黄色的表示顶点y1=rand(3,5);y2=rand(3,5);y3=rand(3,5);fill3(y1,y2,y3,m);hold on;plot3(y1,y2,y3,yo)(四)三维网格图mesh 三维网线绘图函数调用格式: mesh(z) z为nm的矩阵,x与y坐标为元素的下标 mesh(x,y,z) x,y,z分别为三维空间的坐标位置例:8阶hadamard矩阵的网线图h2=1 1;1 -1;h4=h2 h2;h2 -h2h8=h4 h4;h4 -h4 1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1

26、-1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1mesh(h8)三维网线图作图要领生成坐标 X,Y=meshgrid(x,y)表达式点运算 Z=X.2+Y.2X,Y是nm的矩阵,维数可任定X nY mZ默认方位角:37。5,俯角30。(五)三维曲面图surf 三维曲面绘图函数,与网格图看起来一样与三维网线图的区别:网线图:线条有颜色,空挡是黑色的(无颜色)曲面图:线条是黑色的,空挡有颜色(把线条之间的空挡填充颜色,沿z轴

27、按每一网格变化(六) 图形修饰方法u图形颜色的修饰matlab 有极好的颜色表现功能,其颜色数据又构成了一维新的数据集合,也可称为四维图形colormap(MAP) 色图设定函数,MAP为m3维色图矩阵图形颜色可根据需要任意生成,也可用matlab配备的色图函数peaks(30);shading interp;colormap(hot)X,Y,Z=peaks(30);surfl(X,Y,Z)shading interp;colormap(cool);axis offv 图形效果修饰透视与消隐 用于网线图裁剪修饰 用于网线图、曲面图视角修饰 观察不同角度的三维视图其它修饰: a. 水线修饰 b.

28、 等高线修饰contour3(peaks,20)(五)、伪彩色图pcolor 常用于以二维平面图表现三维图形的效果,用颜色表示三维图形的高度。(六)动画效果动画生成的步骤创建帧矩阵 moviein对动画中的每一帧生成图形,并把它们放到帧矩阵中 getframe从帧矩阵中回放动画小结:基本绘图函数 plot, plot3, mesh, surf要求掌握以上绘图函数的用法、简单图形标注、简单颜色设定第四讲:Matlab程序设计安排:分两次课讲解和练习第一次课1、Matlab程序设计初步2、程序设计的流程控制第二次课程序设计的技巧等4.1 Matlab程序设计初步 在MATLAB工作环境下,我们报容

29、易输入各种命令,以便完成指定的功能。然而直接在MATLAB环境下输入命令,边解释边运行,这多少给人带来不便之处:输入等待、修改不便、程序保存和检查困难等等。幸好MATLAB提供了更方便的方法来进行程序设计,即采用M文件编程。4.1.1 脚本文件和函数文件的定义 MATLAB的M文件有两类:脚本文件和函数文件。(1)我们将原本要在MATLAB环境下直接输入的语句,放在一个以m为后缀的文件中,这一文件就称为脚本文件。有了脚本文件,可直接在MATLAB中输入脚本文件名(不含后缀),这时MATLAB会打开这一脚本文件,并依次执行脚本文件中的每一条语句,这与在MATLAB中直接输入语句的结果完全一致。

30、(2)另一类M文件是函数文件,它的第一行必须是函数定义行。函数文件由五部分构成:函数定义行;H1行;函数帮助文本函数体;注释。在脚本和函数文件中,以开头的行称为注释行,也就是说,之后的字符不MATLAB执行。在函数文件中。其第二行一般是注释行,这一行称为H1行,实际上它是帮助文本中的第一行。H1行不仅可以由helPfunction-name命令显示。因此这一行内容提供了这个函数的重要信息。3函数帮助文本这部分内容是以开头的帮助文本,它用来比较详细地说明这一函数。当在MATLAB下输入helpfunction-name时可显示出H1行和函数帮助文本。这部分文本从H1行开始,到第一个非开头的行结束

31、。4函数体函数体是完成指定功能的语句实体,它可采用任何可用的MATLAB命令,包括MATLAB提供的函数和用户自己设计的M函数。5注释注释行是以开头的行,它可出现在函数的任意位置,也可以加在语句行之后,以便对本行进行注释。在函数文件中,除了函数定义行和函数体之外,其它部分都是可以省略的,不是必须有的。但作为一个函数,为了提高函数的可用性,应加上H1行和函数帮助文本;为了提高函数的可读性,应加上适当的注释4.1.2 脚本文件和函数文件比较脚本文件和函数文件之间有一些本质上的差异,如表4.1所示举例函数和脚本运行比较Clear allx=rand(4,4)+2Sta14.1.3函数的工作空间每个M

32、文件的函数都有一块用作为工作空间的存贮区域,它与MATLAB的基本工作空间不同,这块区域称为函数工作空间。每个函数都有自己的工作空间,其中保存着在函数中使用的局部变量。在调用函数时,只有把输入变量传递给函数的变量值,才能在函数中使用,它们来自于被调用函数所在的基本工作空间或函数工作空间。同佯,函数返回的结果传递给被调用函数所在的基本工作空间或函数工作空间。4.1.4 函数变量(1)在MATLAB函数中,引用的输入/输出变量的数目可少于编写的变量数目即当编写了一个具有n个输入变量和m个输出变量的函数时,我们在引用时,输入变量可少于n个,输出变量可少于m个。但这时在函数设计中,必须进行适当的处理。

33、(2)在函数中,有两个永久变量nargin和nargout,它们可自动给出输入变量数和输出变量数,因此利用这两个函数,可根据不同的输入/输出变量数来进行不同的处理。这在MATLAB工具箱的许多函数中都有应用。举例function c=testarg1(a,b)if (nargin=1); c=a.2;elseif (nargin=2); c=a*b;end4.1.5 局部变量和全局变量在函数工作空日中,变量有三类: (1)由调用函数传递输入和输出数据的变量; (2)在函数内临时产生的变量(局部变量); (3)由调用函数空司、基本工作空日或其它函数工作空间提供的全局变量。 我们曾提到过,输入数据只能通过输入变量传递。事实上,有些参数还可以通过将变量宣称为全局变量来传递,而且这时的参数可以来自于函数调用语句所在的函数之外的其他函数。举例(一个简单的例子)z=alpha*x+beta*y让和采用全局变量进行参数传递,从而计算z的值首先定义函数:function z=fun1(x,y);global alpha beta %将和宣称为全局变量z=alpha*x+beta*y;然后,写一个脚本文件global

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 期刊短文 > 互联网

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁