收藏 分享(赏)

数学建模 matlab课件定稿.ppt

上传人:天天快乐 文档编号:1480877 上传时间:2018-07-21 格式:PPT 页数:237 大小:477KB
下载 相关 举报
数学建模 matlab课件定稿.ppt_第1页
第1页 / 共237页
数学建模 matlab课件定稿.ppt_第2页
第2页 / 共237页
数学建模 matlab课件定稿.ppt_第3页
第3页 / 共237页
数学建模 matlab课件定稿.ppt_第4页
第4页 / 共237页
数学建模 matlab课件定稿.ppt_第5页
第5页 / 共237页
点击查看更多>>
资源描述

1、第一讲 MATLAB概述与运算基础,MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,自1984年由美国 MathWorks 公司推向市场以来,历经十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。,在欧美各高等院校,MATLAB已经成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等课程的基本教学工具,成为大学生、硕士生以及博士生必须掌握的基本技能。,MATLAB: 是英文MATrix LABorotory(矩阵实验室)的缩写。,一. MATLAB特点:,一.

2、MATLAB特点:,1. 数值计算和符号计算功能MATLAB的数值计算功能包括:矩阵运算、多项式和有理分式运算、数据统计分析、数值积分、优化处理等。符号计算将得到问题的解析解。,2.MATLAB语言MATLAB除了命令行的交互式操作以外,还可以程序方式工作。使用MATLAB可以很容易地实现C或FORTRAN语言的几乎全部功能,包括Windows图形用户界面的设计。,3.图形功能 MATLAB提供了两个层次的图形命令:一种是对图形句柄进行的低级图形命令,另一种是建立在低级图形命令之上的高级图形命令。利用MATLAB的高级图形命令可以轻而易举地绘制二维、三维乃至四维图形,并可进行图形和坐标的标识、

3、视角和光照设计、色彩精细控制等等。,4.应用工具箱 基本部分和各种可选的工具箱。 基本部分中有数百个内部函数。其工具箱分为两大类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、可视建模仿真功能及文字处理功能等。学科性工具箱专业性比较强,如控制系统工具箱、信号处理工具箱、神经网络工具箱、最优化工具箱、金融工具箱等,用户可以直接利用这些工具箱进行相关领域的科学研究。,四. MATLAB运算量,二. MATLAB运行环境,三. MATLAB集成环境,变量和赋值语句 MATLAB赋值语句有两种形式:(1) 变量=表达式 (2) 表达式 其中“表达式”是用运算符将有关运算量连接起来

4、的式子,其结果是一个矩阵。 注第二种语句形式下,将表达式的值赋给MATLAB的永久变量ans。 如果在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。在一条语句中,如果表达式太复杂,一行写不下,可以加上三个小黑点(续行符)并按下回车键,然后接下去再写。例如 s=1-1/2+1/3-1/4+1/5-1/6+1/7- 1/8+1/9-1/10+1/11-1/12;,四. MATLAB运算量,MATLAB表达式 算术表达式。 运算符有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方) 对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。 关系表达式。

5、运算符有:(大于)、=(大于或等于)、=(等于)、=(不等于) 逻辑表达式。 运算符有:&(与)、|(或)和(非),四. MATLAB运算量,运算法则:(1)在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。(2)参与逻辑运算的可以是两个标量、两个同维矩阵或参与逻辑运算的元素一个为标量,另一个为矩阵。()在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。,四. MATLAB运算量,2. MATLAB表达式,五. 矩阵运算,矩阵是MATLAB最基本的数据对象,MATLAB的大部分运算或命令都是在矩阵运算的意义下执行的。在MATLAB中,不需对矩阵的维数和类型进行说明

6、,MATLAB会根据用户所输入的内容自动进行配置。 建立矩阵建立矩阵可以用:直接输入法、利用函数建立矩阵和利用M文件建立矩阵。 直接输入法:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。(也可以用回车键代替分号) 例如,键入命令: A=1 2 3;4 5 6;7 8 9 输出结果是: A = 1 2 34 5 67 8 9,五. 矩阵运算,利用函数建立数值矩阵:MATLAB提供了许多生成和操作矩阵的函数,可以利用它们去建立矩阵。 例如:reshape函数和diag函数等。 reshape函数用于建立数值矩阵。 diag函数

7、用于产生对角阵。,利用M文件建立矩阵:对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。其步骤为: 第一步:使用编辑程序输入文件内容。 第二步:把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。 第三步:在MATLAB命令窗口中输入mymatrix,就会自动建立一个名为AM的矩阵,可供以后显示和调用。,建立矩阵,五. 矩阵运算,利用M文件建立矩阵:对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。其步骤为: 第一步:使用编辑程序输入文件内容。第二步:把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。第三步:在MATLAB命令窗口中输入mymatrix,就

8、会自动建立一个名为AM的矩阵,可供以后显示和调用。,建立矩阵,五. 矩阵运算,冒号表达式在MATLAB中,冒号是一个重要的运算符。利用它可以产生向量,还可用来拆分矩阵。冒号表达式的一般格式是:e1:e2:e3其中e1为初始值,e2为步长,e3为终止值。冒号表达式可产生一个由e1开始到e3结束,以步长e2自增的行向量。,MATLAB常用数学函数MATLAB提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。 例如: A= 1 2 3;4 5 6 B=fix(pi*A) C=cos(pi*B),五. 矩阵运算,矩阵的基本

9、运算 ()矩阵转置 ()矩阵加和减 ()矩阵乘法 ()矩阵除法 Ab=inv(A)*b ()矩阵的乘方 a2,五. 矩阵运算,建立矩阵的函数 常用函数有: eye(size(A) 产生与A矩阵同阶的单位矩阵 zeros(m,n) 产生0矩阵 ones(m,n) 产生幺矩阵rand (m,n) 产生随机元素的矩阵 Size(a) 返回包含两个元素的向量。 Length(a) 返回向量的最大者。,数组运算 (1) 数组的加和减 (2) 数组的乘和除 (3) 数组的乘方,五. 矩阵运算,六应用举例,【例1】 求解线性方程组AX=B 1 1.5 2 9 7 3 0 3.6 0.5 -4 4 -4 其中

10、A= 7 10 -3 22 33 , B= 20 3 7 8.5 21 6 5 3 8 0 90 -20 16,在MATLAB命令窗口输入命令: a=1,1.5,2,9,7;0,3.6,0.5,-4,4;7,10,-3,22,33;3,7,8.5,21,6;3,8,0,90,-20;b=3;-4;20;5;16;x=ab,得到的结果是:x =3.5653-0.9255-0.26950.14350.0101,【例2】 求方程 x4+7x3 +9x-20=0的全部根。 在MATLAB命令窗口输入:p=1,7,0,9,-20; %建立多项式系数向量x=roots(p) %求根,得到的结果是:x =-

11、7.2254-0.4286 + 1.5405i-0.4286 - 1.5405i1.0826,第二讲 MATLAB程序设计,MATLAB有两种工作方式:,交互式的命令行工作方式,M文件的程序工作方式,一. M文件,一. M文件,用MATLAB语言编写的程序,称为M文件。M文件有两类:命令文件和函数文件。命令文件:没有输入参数,也不返回输出 参数。即命令批处理文件 函数文件:可以输入参数,也可返回输出参数。,M文件的建立与编辑,建立新的M文件:从MATLAB命令窗口的File菜单中选择New菜单项,再选择M-file命令。,一. M文件,编辑已有的M文件:从MATLAB命令窗口的Flie菜单中选

12、择Open M-file命令。,命令文件,将需要运行的命令编辑到一个命令文件中,然后在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。 【例1】 建立一个命令文件将变量a,b的值互换。,一. M文件,e31m文件: a=1:9;b=11,12,13;14,15,16;17,18,19;c=a;a=b;b=c;ab 在MATLAB的命令窗口中输入e31,将会执行该命令文件。,二数据的输入输出,1. input函数:用于向计算机输入一个参数。 调用格式: A=input(提示信息,选项); 注:s选项,则允许用户输入一个字符串。 例如想输入一个人的姓名,可采用命令xm=in

13、put(Whats your name:,s) 【例2】 求一元二次方程a2 +bx+c=0的根。,二数据的输入输出,a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a) 将该程序以aa.m文件存盘,然后运行aa.m文件。,2 pause函数:暂停程序的执行。 调用格式: pause(延迟秒数) 注:如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。,二数据的输入输出,3 disp函数:命令窗口输出函数。 调用格式: disp(输出项)

14、注:输出项为字符串或矩阵。 例如A=Hello,MATLAB;disp(A) 输出为: Hello,MATLAB,三程序设计,(一)选择结构,选择结构的语句有if语句和switch语句。 1 if语句格式一: if 条件语句组end,三程序设计,格式二: if 条件语句组1else语句组2end,(一)选择结构,格式三: if 条件1语句组1elseif 条件2语句组2elseif 条件m语句组melse语句组m+1end,三程序设计,【例4】 输入三角形的三条边,求面积。,A=input(请输入三角形的三条边:);if A(1)+A(2)A(3) elsedisp(不能构成一个三角形。)en

15、d 运行: 请输入三角形的三条边:4 5 69.9216,三程序设计,(一)选择结构,【例5】 输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。,c=input(,s);if c=A end,三程序设计,(一)选择结构,2 switch语句,switch语句根据变量或表达式的取值不同,分别执行不同的语句。其格式为:switch 表达式case 值1语句组1case 值2,语句组2case 值m语句组motherwise语句组m+1end,三程序设计,(一)选择结构,【例6】 根据变量 num 的值来决定显示的内容。,num=input(请输

16、入一个数);switch numcase -1disp(I am a teacher.);case 0disp(I am a student.);case 1disp(You are a teacher.);otherwisedisp(You are a student.);end,三程序设计,(一)选择结构,(二)循环结构,实现循环结构的语句:for语句和while语句。 1 for语句: 格式: for 循环变量=表达式1:表达式2:表达式3循环体语句end 注:其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。,三程序设计,

17、2 while语句 格式为:while (条件)循环体语句end 【例7】 根据例3.6中求y的表达式,求:(1)y3时的最大n值。(2)与(1)的n值对应的y值。,三程序设计,(二)循环结构,求y的表达式,y=0; i=1;while 1 %循环的条件为1,即循环条件总是满足的,这是一个永真循环f=1/(2*i-1);y=y+f;if y3break;endi=i+1;endn=i-1y=y-f,三程序设计,(二)循环结构,3 循环的嵌套,如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。 多重循环的嵌套层数可以是任意的。可以按照嵌套层数,分别叫做二重循环、三

18、重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。,三程序设计,(二)循环结构,【例8】 求100,1000以内的全部素数。,n=0;for m=100:1000flag=1; j=m-1;i=2;while i=j end,i=i+1;endif flag n=n+1;prime(n)=m;endendprime %变量prime存放素数,三程序设计,(二)循环结构,四函数文件,函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。事实上,MATLAB提供的标准函数大部分都是由函数文件定义的。,四. 函数文件,1函数文件格式,函数文件由function语句引导,其格式为:f

19、unction 输出形参表=函数名(输入形参表)注释说明部分函数体 注:其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于1个时,则应该用方括号括起来。,【例9】 编写函数文件求小于任意自然数n的Fibonacci数列各项。,function f=ffib(n)%用于求Fibonacci数列的函数文件%f=ffib(n)%1999年9月30日编f=1,1;i=1;while f(i)+f(i+1)nf(i+2)=f(i)+f(i+1);i=i+1;end,将以上函数文件以文件名ffib.m存盘,然后在MATLAB命令窗口输入以下命令,可求小于2

20、 000的Fibonacci数。ffib(2000),四. 函数文件,2函数调用,函数文件编制好后,就可调用函数进行计算了。如上面定义ffib函数后,调用它求小于2000的Fibonacci数。 函数调用的一般格式是:输出实参表=函数名(输入实参表),四. 函数文件,【例10】 利用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。,函数文件tran.m:function gama,theta=tran(x,y)gama=sqrt(x*x+y*y);theta=atan(y/x);调用tran.m的命令文件main1.m:x=input(Please input x=:);y=inpu

21、t(Please input y=:);gam,the=tran(x,y);gamthe,已知转换公式为:极坐标的矢径:极坐标的幅角:,四. 函数文件,【例11】 利用函数的递归调用,求n!。,function f=factor(n)if n=1f=1;elsef=factor(n-1)*n;endreturn; %返回在命令文件main2.m中调用函数文件factor.m:for i=1:10fac(i)=factor(i);endfac,程序运行结果是:fac =Columns 1 through 6 1 2 6 24 120 720 Columns 7 through 10 504 40

22、320 362880 3628800,四. 函数文件,3 函数所传递参数的可调性,MATLAB在函数调用上有一个与众不同之处:函数所传递参数数目的可调性。凭借这一点,一个函数可完成多种功能。在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。,四. 函数文件,【例12】 nargin用法示例,函数文件examp.m:function fout=charray(a,b,c)if nargin=1fout=a;elseif

23、nargin=2fout=a+b;elseif nargin=3fout=(a*b*c)/2;end,命令文件mydemo.m:x=1:3;y=1;2;3;examp(x)examp(x,y)examp(x,y,3),执行mydemo.m后的输出是:ans =1 2 3ans =2 4 6ans =21,四. 函数文件,五全局变量和局部变量,在MATLAB中,全局变量用命令global定义。函数文件的内部变量是局部的,与其他函数文件及MATLAB工作空间相互隔离。但是,如果在若干函数中,都把某一变量定义为全局变量,那么这些函数将公用这一个变量。全局变量的作用域是整个MATLAB工作空间,即全程

24、有效。所有的函数都可以对它进行存取和修改。因此,定义全局变量是函数间传递信息的一种手段。,四. 函数文件,【例13】 全局变量应用示例,先建立函数文件wadd.m,该函数将输入的参数加权相加。 function f=wadd(x,y)%add two variable global ALPHA BETAf=ALPHA*x+BETA*y;,在命令窗口中输入:global ALPHA BETAALPHA=1;BETA=2;s=wadd(1,2) 输出为:s =5,习 题,1. 输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。 2. 求Fibo

25、nacci数列(1)大于4000的最小项。(2)5000之内的项数。,3. 写出下列程序的输出结果: s=0;a=12,13,14;15,16,17;18,19,20;21,22,23;for k=afor j=1:4if rem(k(j),2)=0s=s+k(j);endendends,第三讲文件操作,Matlab环境下的文件与其它系统一样,也有二类文件组成,一是文件,又称M文件,另一类是数据文件。系统除提供了文件的一般管理功能外,还提供了对数据文件进行操作的特殊功能函数。,3.1 基本命令,1. help 帮助命令 格式: help 命令名 例如: help plothelp matlab

26、general 2. what 显示目录内容命令 格式: what 目录名 例如: what matlab显示matlab目录下的所有M-文件。,3.1 基本命令,3type 显示文件内容命令 格式: type文件名 显示M-文件的内容。 4 寻找命令 格式: lookfor 命令或字符串 寻找命令或字符串是否存在。 例如: lookfor cos,3.1 基本命令,5which 寻找函数命令 格式:which 函数名 显示函数所在的文件位置,给出路径。 例如: which pinv 6 path 路径控制命令 格式: path 路径 显示或改变搜索路径。 例如: path (path,d:t

27、estaaa),3.1 基本命令,7who,whos 显示变量命令 显示当前变量。 whos命令更详细。 8 load,save 取出与保存结果命令 从磁盘上读出或保存计算结果。 例如: save test 将变量存入test.mat文件中。 例如: save test x y 仅保存x ,y 变量。,3.1 基本命令,9 clear 清除变量命令 格式: 变量名 例如: clear x y 10 disp 显示文本或变量内容命令 例如:x=1 2 3disp(x)y=aaaaaaadisp(y),3.1 基本命令,11 cd 改变目录命令 与DOS类似。 12 dir 显示目录内容命令 显示

28、目录里的文件。 例如:dir matlabnotebook,3.1 基本命令,13delete 删除文件或对象命令 格式: delete 文件名 不能用通配符delete(对象) 例如:H=PLOT(X,X)delete (H)删除图形对象H,3.1 基本命令,14! 执行系统命令 在Windows下运行。“!”用于执行DOS命令。 例如:!dir *.exe 显示当前目录里的EXE文件。,3.2 文件的打开与关闭,Matlab提供了对数据文件建立、打开、读、写以及关闭等一系列函数,数据文件一般存放在磁盘等介质上,用文件名标识,系统对文件名没有特殊要求。文件数据格式有二种形式,一是二进制格式文

29、件,二是ASCII文本文件,系统对这两类文件提供了不同的读写功能函数。,3.2 文件的打开与关闭,1 fopen打开文件 在读写文件之前,必须先用fopen命令打开一个文件,并指定允许对该文件进行的操作。文件操作结束后,应及时关闭文件,以免数据的丢失或误修改。fopen函数格式为:Fid= fopen(filename,permission),3.2 文件的打开与关闭,其中filename为文件名,permission为文件格式,可以是下列格式之一: r 打开文件,读数据,文件必须存在。 w 打开文件,写数据,若文件不存在,系统会自动建立。 a 打开文件,在文件末尾添加数据。 r+ 打开文件,

30、可以读和写数据,文件必须存在。 w+ 打开文件,供读与写数据用。 a+ 打开文件,供读与添加数据用。 W 打开文件供写数据用,无自动刷新功能。 A 打开文件供添加数据用,无自动刷新功能。,3.2 文件的打开与关闭,例如:打开一个名为std.dat的数据文件并进行读操作,其命令格式为: Fid=fopen( std.dat, r ) 上述打开格式均为二进制格式,如果想用ASCII文本格式,则必须在格式字符串中加上字符t,例如用r t表示以ASCII格式打开供读操作的数据文件。,3.2 文件的打开与关闭,2 fclose关闭文件 文件在进行完读、写等操作后,应及时关闭,以保证文件的安全可靠。关闭文

31、件命令格式为: Sta=fclose(Fid) 关闭Fid所表示的文件 Sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回1。,3.3 文件的读写操作,1 二进制数据文件 fread 读二进制数据文件。格式为: A,COUNT=fread(Fid,size,precision) 其中A为数据矩阵,COUNT返回所读取的数据元素个数。size为可选项,若不选用则读取整个文件内容,若选用它的值可以是下列值:,3.3 文件的读写操作,N 读取 N个元素到一个列向量。 inf 读取整个文件。 M,N 读数据到MN的矩阵中,数据按列存放。,3.3 文件的读写操作,precision用于控制所

32、读数据的精度格式。 缺省格式为uchar,即无符号字符格式。例如:Fid=fopen(std.dat, r);A=fread(Fid, 100, long);Sta=fclose(fid); 以读数据方式打开数据文件std.dat,并按长整型数据格式读取文件的前100个数据放入向量A,然后关闭文件。,3.3 文件的读写操作,fwrite 函数以二进制格式向数据文件写数据,其格式为: COUNT=fwrite (Fid, A, precision) 例如:Fid=fopen(magic5.bin, wb); fwrite(Fid, magic, int32); 上述语句将矩阵magic中的数据写

33、入文件magic5.bin中,数据格式为32位整型二进制格式。,3.3 文件的读写操作,【例1】建立一数据文件test.dat,用于存放矩阵A的数据。 已知 A=-0.6515 -0.2727 -0.4354 -0.3190 -0.9047-0.7534 -0.4567 -0.3212 -0.4132 -0.3583-0.9264 -0.8173 -0.7823 -0.3265 -0.0631-0.1735 -0.7373 -0.0972 -0.3267 -0.6298-0.4768 -0.6773 -0.6574 -0.1923 -0.4389,3.3 文件的读写操作,Fid=fopen(t

34、est.dat, w) cnt=fwrite(Fid, A, float) fclose(Fid) 程序段将矩阵A的数据以二进制浮点数格式写入文件test.dat中。 Fid=fopen(test.dat, r) B,cnt=fread(Fid, 5,inf, float) fclose(Fid) 读取文件test.dat的内容。,3.3 文件的读写操作,2 文本文件 fscanf 读ASCII文本文件 A,COUNT= fscanf (Fid, format, size) 其中A为数据矩阵,用以存放读取的数据,COUNT返回所读取的数据元素个数。 format用以控制读取的数据格式,由%加上

35、格式符组成,格式符为: d, i, o, u, x, e, f, g, s, c与. . .,3.3 文件的读写操作,例如: s=fscanf(fid, %s) 读取一个字符串 a=fscanf(fid, %5d) 读取5位数的整数 b= fscanf(fid, %6.2d) 读取浮点数,3.3 文件的读写操作,fprintf 写ASCII数据文件,其格式为:COUNT= fprintf(Fid, format, A,) 其中A为要写入文件的数据矩阵,先按format格式化数据矩阵A,后写入到Fid所指定的文件。 例如:x = 0: 0.1: 1; y = x; exp(x);Fid = fo

36、pen(exp.txt, w);fprintf(Fid,%6.2f %12.8fn,y);fclose(Fid);,3.4 数据文件定位写操作,1.fseek函数定位文件位置指针,格式为: status=fseek(Fid, offset, origin)其中Fid为文件句柄,offset表示位置指针相对移动的字节数,若为正整数表示向文件尾方向移动,若为负整数表示向文件头方向移动,origin表示位置指针移动的参照位置,它的取值有三种可能:cof 表示文件的当前位置,bof 表示文件的开始位置,eof 表示文件的结束位置。若定位成功status返回值为0,否则返回值为1。,3.4 数据文件定位

37、写操作,2. ftell函数返回文件指针的当前位置。 其格式为:position=ftell (Fid) 返回值为从文件开始到指针当前位置的字节数。若返回值为1表示获取文件当前位置失败。,3.4 数据文件定位写操作,【例2】下述程序段说明了函数fseek和ftell的使用。a=1: 5;Fid=fopen(fdat.bin, w); 以写方式打开文件fdat.binfwrite(Fid, a, int16 ); 将a中的5个数据元素分别以 双字节整型格式写入status=fclose(Fid); 文件fdat.binFid=fopen(fdat.bin, r); 以读数据方式打开文件,3.4

38、数据文件定位写操作,status=fseek(Fid, 6, bof); 将文件数据指针从开始位置向尾部移动6个字节 four=fread(Fid, 1, int16); 读取当前数据,即第7个数据,并移动指针到下一个数据 position=ftell(Fid); eight=fread(Fid, 1, int16); 读取第8个数据 status=fclose(Fid);,习题,1已知文件句柄为Fid,请写出完成下列操作的命令或命令序列 a 以读和写方式打开二进制格式数据文件 b 将浮点数F添加到文件尾部 c 将文件内容以浮雕点数格式读入数据 向量B,习题,2建立数据文件test.dat,要

39、求该文件可以读、写。文件内容如下: NAME SCORE Liuqi 84.0 Zhangbin 87.5 Liping 90.0 Wangwei 78.0 Wujian 92.5 ,第四讲 绘图功能,作为一个功能强大的工具软件,Matlab具有很强的图形处理功能,提供了大量的二维、三维图形函数。由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面即常方便又高效。,4.1 二维图形,一、 plot函数 函数格式:plot(x,y) 其中x和y为坐标向量 函数功能:以向量x、y为轴,绘制曲线。 【例1】 在区间0X2内,绘制正弦曲线Y=SIN(X),其程序为: x=0:pi/100:2

40、*pi; y=sin(x); plot(x,y),【例2】同时绘制正、余弦两条曲线Y1=SIN(X)和Y2=COS(X),其程序为: x=0:pi/100:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2) plot函数还可以为plot(x,y1,x,y2,x,y3,)形式,其功能是以公共向量x为X轴,分别以y1,y2,y3,为Y轴,在同一幅图内绘制出多条曲线。,4.1 二维图形,一、 plot函数,(一)线型与颜色 格式:plot(x,y1,cs,.) 其中c表示颜色, s表示线型。,4.1 二维图形,一、 plot函数,【例3】 用不同线型和颜色重新绘制

41、例4.2图形,其程序为: x=0:pi/100:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,go,x,y2,b-.) 其中参数go和b-.表示图形的颜色和线型。g表示绿色,o表示图形线型为圆圈;b表示蓝色,-.表示图形线型为点划线。,(二)图形标记 在绘制图形的同时,可以对图形加上一些说明,如图形名称、图形某一部分的含义、坐标说明等,将这些操作称为添加图形标记。 title(加图形标题); xlabel(加X轴标记); ylabel(加Y轴标记); text(X,Y,添加文本);,4.1 二维图形,一、 plot函数,(三)设定坐标轴 用户若对坐标系统不满意,可

42、利用axis命令对其重新设定。 axis(xmin xmax ymin ymax) 设定最大和最小值 axis (auto) 将坐标系统返回到自动缺省状态 axis (square) 将当前图形设置为方形 axis (equal) 两个坐标因子设成相等 axis (off) 关闭坐标系统 axis (on) 显示坐标系统,4.1 二维图形,一、 plot函数,【例4】 在坐标范围0X2,-2Y2内重新绘制正弦曲线,其程序为: x=linspace(0,2*pi,60);生成含有60个数据元素的向量X y=sin(x); plot(x,y); axis (0 2*pi -2 2);设定坐标轴范围

43、,4.1 二维图形,一、 plot函数,(四)加图例 给图形加图例命令为legend。该命令把图例放置在图形空白处,用户还可以通过鼠标移动图例,将其放到希望的位置。 格式:legend(图例说明,图例说明);,4.1 二维图形,一、 plot函数,【例5】 为正弦、余弦曲线增加图例,其程序为: x=0:pi/100:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2, -); legend(sin(x),cos(x);,(一)subplot(m,n,p) 该命令将当前图形窗口分成mn个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。,

44、4.1 二维图形,二、 subplot函数,【例6】 在一个图形窗口中同时绘制正弦、余弦、正切、余切曲线,程序为: x=linspace(0,2*pi,60); y=sin(x); z=cos(x); t=sin(x)./(cos(x)+eps); eps为系统内部常数 ct=cos(x)./(sin(x)+eps); subplot(2,2,1); 分成22区域且指定1号为活动区 plot(x,y); title(sin(x); axis (0 2*pi -1 1); subplot(2,2,2);,plot(x,z); title(cos(x); axis (0 2*pi -1 1); s

45、ubplot(2,2,3); plot(x,t); title(tangent(x); axis (0 2*pi -40 40); subplot(2,2,4); plot(x,ct); title(cotangent(x); axis (0 2*pi -40 40);,4.1 二维图形,二、subplot函数,(二)多图形窗口 需要建立多个图形窗口,绘制并保持每一个窗口的图形,可以使用figure命令。 每执行一次figure命令,就创建一个新的图形窗口,该窗口自动为活动窗口,若需要还可以返回该窗口的识别号码,称该号码为句柄。句柄显示在图形窗口的标题栏中,即图形窗口标题。用户可通过句柄激活或

46、关闭某图形窗口,而axis、xlabel、title等许多命令也只对活动窗口有效。,4.1 二维图形,二、subplot函数,重新绘制上例4个图形,程序变动后如下: x=linspace(0,2*pi,60); y=sin(x); z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); H1=figure; 创建新窗口并返回句柄到变量H1 plot(x,y); 绘制图形并设置有关属性 title(sin(x); axis (0 2*pi -1 1); H2=figure; 创建第二个窗口并返回句柄到变量H2 plot(x,z); 绘

47、制图形并设置有关属性 title(cos(x);,axis (0 2*pi -1 1); H3=figure; 同上 plot(x,t); title(tangent(x); axis (0 2*pi -40 40); H4=figure; 同上 plot(x,ct); title(cotangent(x); axis (0 2*pi -40 40);,4.1 二维图形,二、subplot函数,(三)hold命令 若在已存在图形窗口中用plot命令继续添加新的图形内容,可使用图形保持命令hold。发出命令hold on后,再执行plot命令,在保持原有图形或曲线的基础上,添加新绘制的图形。,4.1 二维图形,二、subplot函数,阅读如下程序: x=linspace(0,2*pi,60); y=sin(x); z=cos(x); plot(x,y,b); 绘制正弦曲线 hold on; 设置图形保持状态 plot(x,z,g); 保持正弦曲线同时绘制余弦曲线 axis (0 2*pi -1 1); legend(cos,sin); hold off 关闭图形保持,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 演讲致辞

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报