《MATLAB程序设计.ppt》由会员分享,可在线阅读,更多相关《MATLAB程序设计.ppt(61页珍藏版)》请在第壹文秘上搜索。
1、MATLAB绘图与程序设计基本知识一一 绘图绘图 二维和三维基本绘图命令二维和三维基本绘图命令Matlab图形窗口图形窗口lMatlab有用于图形输出的专用有用于图形输出的专用窗口,称为窗口,称为图形窗口图形窗口。所有的。所有的绘图命令将把图象输出到当前绘图命令将把图象输出到当前窗口,若在命令执行前,当前窗口,若在命令执行前,当前窗口已经存在图形,则原图形窗口已经存在图形,则原图形将被新图象覆盖掉。将被新图象覆盖掉。二维平面图形的绘制二维平面图形的绘制plot 最基本的二维图形指令最基本的二维图形指令lplot的功能:的功能:l plot命令自动打开一个图形窗口命令自动打开一个图形窗口Figu
2、rel 用直线连接相邻两数据点来绘制图形用直线连接相邻两数据点来绘制图形l根据图形坐标大小自动缩扩坐标轴,将数根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把可自定坐标轴,可把x, y 轴用对数坐标表轴用对数坐标表示示线性坐标曲线线性坐标曲线 plotlplot(y): 参数y为向量,以y的值为纵坐标,y的下标为横坐标。例1:x=0, 0.48,0.84,1,0.91,0.6,0.14 plot (x)plot(x,y) :参数x,y为向量,以x为横坐标,以y为纵坐标。注意注意:x,y的长度必须相等例:t=0:0
3、.001:2*pi; y=cos(t);plot(t,y)lplot(Y)参数Y为mn的矩阵。该命令把矩阵Y转化为长度为m的n个向量,然后对n个向量划出n条线。例:y=5 4 4 8 9 10; 3 4 4 5 8 2; 8 5 7 9 6 25; 9 8 8 9 6 7 plot(y)l复向量式 plot(Z):当z为一个复向量时,该命令等价于plot(real(Y),imag(Y);其它情况忽略z的虚部。例:t=0:0.1:3*pi; x=t+i*cos(t); plot(x); figure; plot(t,x)l综合调用方式plot(x1,y1,x2,y2,)该命令可以在同一窗口绘制多
4、条曲线。例: t=0:0.1:3*pi; x=t+i*cos(t); plot(real(x),imag(x),t,x) 三维绘图可分为三个过程:三维绘图可分为三个过程:l 生成平面网格点生成平面网格点l 生成和绘制三维网格点生成和绘制三维网格点l 处理三维表面。处理三维表面。 三维曲面绘图三维曲面绘图生成平面网格点 X,Y=meshgrid(x,y)lx 是区间是区间x0,xm上划分点组成的向量;上划分点组成的向量;ly 是区间是区间y0,yn上划分点组成的向量;上划分点组成的向量;lX,Y是输出变量矩阵,矩阵是输出变量矩阵,矩阵X的行向量都的行向量都是是x,矩阵矩阵y的列向量都是的列向量都
5、是y。例:例:X,Y=meshgrid(-2:2:2,-2:1:2)l生成三维网格点 mesh(x,y,z,c): x,y,z,c是同维矩阵是同维矩阵 x,y,z对应确定空间上的网格点对应确定空间上的网格点 c为颜色矩阵;为颜色矩阵;例:例: X,Y=meshgrid(-2:.2:2,-2:.2:2);Z=X.*exp(-X.2-Y.2);mesh(Z)l三维表面处理 对网格曲面的网格块区域着色就得对网格曲面的网格块区域着色就得到实曲面。到实曲面。mesh命令仅对网格线着色,命令仅对网格线着色,而对网格片着色使用而对网格片着色使用surf命令。命令。surf的的使用方式与使用方式与mesh相同
6、。相同。例:例:X,Y=meshgrid(-2:.2:2,-2:.2:2); Z=X.*exp(-X.2-Y.2); surf(Z);l 函数函数contour绘制二维等高线。绘制二维等高线。用户可以指定等高线的条数、坐用户可以指定等高线的条数、坐标系的比例及某值上的等高线标系的比例及某值上的等高线,两两者用法相同者用法相同.等高线的绘制等高线的绘制lshading faceted 网格修饰,缺省方式-202-202-505xyPeakslshading flat 去掉黑色线条,根据小方块的值确定颜色-202-202-505xyPeakslshading interp 颜色整体改变,根据小方块
7、四角的值差补过度点的值确定颜色peaks(30);shading interp;colormap(hot)X,Y,Z=peaks(30);surfl(X,Y,Z)shading interp;colormap(cool);axis offl透视与消隐p=peaks(30);mesh(p);hidden on01020300102030-10-505105101520253035404551015202530354045 -5.22 -3.89 -2.56 -2.56 -1.23 -1.23 0.0996 0.0996 1.43 1.43 2.76 2.76 2.76 4.09 5.42 6.7
8、5lM文件类型文件类型命令文件(脚本文件命令文件(脚本文件script-file)函数文件(函数文件(function-file)二二 编程编程l命令文件格式命令文件格式注解运行命令注解运行命令将matlab命令构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为命令文件模式。程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。例:例: % % 画出花瓣画出花瓣 theta=-pi:0.01:pi;theta=-pi:0.01:pi; rho(1,:)=2 rho(1,:)=2* *sin(5sin(5* * theta).2; theta).
9、2; polar(theta,rho(1,:) % polar(theta,rho(1,:) %极坐标绘图极坐标绘图l函数定义行函数定义行 文件的第一行,定义函数名,输入输出参数的数量和名称。文件的第一行,定义函数名,输入输出参数的数量和名称。lH1H1行行帮助信息的第一行,紧跟定义行之后。帮助信息的第一行,紧跟定义行之后。l函数说明函数说明H1H1行以后,函数主体以前的帮助信息。行以后,函数主体以前的帮助信息。l函数主体函数主体函数中进行真正计算和输出赋值等工作的代码。函数中进行真正计算和输出赋值等工作的代码。 l注释注释函数体中用函数体中用引导的对程序的注释。引导的对程序的注释。 函数文件
10、格式函数文件格式 函数文件的一般结构:函数文件的一般结构:例:例:function k=rank(x)%RANK Number of linearly independent rows or columns.% K = RANK(X) is the number of singular values of X% that are larger than MAX(SIZE(X) * NORM(X) * EPS.% K = RANK(X,tol) is the number of singular values of X that% are larger than tol.% Copyright
11、(c) 1984-94 by The MathWorks, Inc.s = svd(x);if (nargin = 1) tol = max(size(x) * max(s) * eps;endr = sum(s tol);程序部分lM文件的编辑环境文件的编辑环境 MatlabMatlab自身提供的自身提供的M M文件编辑器;文件编辑器; 一般的文字编辑器,如写字板、记事一般的文字编辑器,如写字板、记事本和本和WordWord等,保存为文本文件,后缀等,保存为文本文件,后缀为为.m.m。注:注: 运行运行m文件之前,必须将文件放在文件之前,必须将文件放在MATLAB的搜索路径上的搜索路径上 l
12、尽量使函数定义名与函数文件名一致。 两者不一致时,MATLAB将忽略函数定义行的函数定义名,而以保存文件名为准。lH1行做好用英文表达,利于关键字查询。MATLAB的搜索过程:的搜索过程:l例:假设MATLAB执行指令cow1.检查cow是否是变量名。2.是否是内建函数(Built_in Function)。3.是否是cow所在M文件的一个子函数。4.是否是cow所在M文件的一个私有函数。5.是否是当前目录上的文件。6.搜索路径上是否有 cow存在。 MATLAB 的变量与表达式lMATLAB的变量与类型的变量与类型变量命名规则变量命名规则l变量名和函数名对字母的大小写敏感;变量名和函数名对字
13、母的大小写敏感;l变量名的第一个字符必须是一个英文字母,最多可包括变量名的第一个字符必须是一个英文字母,最多可包括3131个字符;个字符;l变量名可由英文字母、数字和下划线混合组成变量名可由英文字母、数字和下划线混合组成 ;l变量名中不得包含空格和标点,但可以由下连字符变量名中不得包含空格和标点,但可以由下连字符l局部变量:具有函数内部作用范围局部变量:具有函数内部作用范围l全局变量:可在几个函数和基本工作空间之间共享,全局变量:可在几个函数和基本工作空间之间共享,具有全局作用范围具有全局作用范围l全局变量的声明:全局变量的声明: global global 变量名变量名1 1 变量名变量名2
14、 2 变量名间用空格分离。变量名间用空格分离。 l全局变量在使用前必须在全局变量在使用前必须在MATLABMATLAB工作空间中申明,而工作空间中申明,而在某个具体的在某个具体的MATLABMATLAB函数中如果想用到该全局变量时,函数中如果想用到该全局变量时,也必须在函数中申明。也必须在函数中申明。l由于全局变量损害函数的封闭性,因此不提倡使用全由于全局变量损害函数的封闭性,因此不提倡使用全局变量。局变量。局部变量和全局变量局部变量和全局变量永久变量永久变量 又称预定义变量(又称预定义变量(Predefined VariablePredefined Variable) ansans; ; e
15、pseps; ; realmaxrealmax; ; realminrealmin; pi; ; pi; i,ji,j; ; infinf; ; NaNNaN; ; comptercompter; flops; version; ; flops; version; 注:尽可能不对永久变量重新赋值,以免产生混淆注:尽可能不对永久变量重新赋值,以免产生混淆lMATLAB基本表达式基本表达式 表达式表达式 变量变量=表达式表达式 MATLABMATLAB书写表达式的规则与书写表达式的规则与“手写算式手写算式”几乎几乎相同。相同。l例: 20.3+3.9*sin(x); y=sin(x)+cos(x)
16、; x, y ,z=peaks字符串数组、单元数组和结构数组数据类型数据类型: :单元型cell数组数组字符型char结构型struct数值型numeric存储型Storage(包括(包括int8,unit8,int16,unit16,int32,unit32)双精度型double稀疏型sparse用户对象user object 最常用的数据类型只有双精度型和字符型,最常用的数据类型只有双精度型和字符型,其他数据类型只在一些特殊条件下使用其他数据类型只在一些特殊条件下使用 MATLAB 程序结构l顺序结构顺序结构l循环结构循环结构l分支结构分支结构l 顺序结构顺序结构 顺序结构就是依照顺序执行程序的各条语顺序结构就是依照顺序执行程序的各条语句。语句在程序文件中的位置反映了程序的执句。语句在程序文件中的位置反映了程序的执行顺序。行顺序。l循环结构循环结构1.1.for-endfor-end循环循环语法为:语法为: for x =arrayfor x =array 可执行语句可执行语句 endend l循环执行的次数为固定的。循环执行的次数为固定的。l循环次数由数组循环次数由数组(arra