第四章matlab程序设计_第1页
第四章matlab程序设计_第2页
第四章matlab程序设计_第3页
第四章matlab程序设计_第4页
第四章matlab程序设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章第四章 Matlab 程序设计程序设计4.1 M文件4.2 Matlab的程序结构4.3 Matlab文件操作4.4 Matlab程序设计主要内容:第四章第四章 Matlab 程序设计程序设计1 指令驱动模式 通常matlab以指令驱动模式工作,即在matlab 窗口下当用户输入单行指令时,matlab 立即处理这条指令,并显示结果,这就是matlab命令行模式。 命令行模式操作时,matlab窗口只允许一次执行一行上的一个或几个语句。 在matlab窗口输入数据和命令进行计算时,当处理复杂问题和大量数据时是不方便的。 命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储

2、的程序文件。matlab的工作模式第四章第四章 Matlab 程序设计程序设计2 m文件模式 m文件是matlab所特有的使用该语言编写的磁盘文件。 将matlab语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。 程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。第四章第四章 Matlab 程序设计程序设计 4.1 M文件 m文件的语法类似于c语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。 m文件可以使用系统认可的文本文件编辑器来建立m文件。如d

3、os下的edit,windows的记事本和word等。常用且最为方便的是使用MATLAB提供的文本编辑器。m文件有两类脚本文件(Script File) : 独立的m文件 1.函数文件(Function File): 可调用的m文件 脚本文件是一串matlab命令的集合,完成制定的功能,变量空间是workspace;函数文件是一个黑箱,根据输入作出输出,变量空间是独立的函数变量空间,在函数运行完成后关闭。第四章第四章 Matlab 程序设计程序设计m文件的建立命令操作:在MATLAB命令窗口输入命令edit菜单操作第四章第四章 Matlab 程序设计程序设计1 脚本文件 脚本文件既不接受输入参

4、数也不返回输出参数,脚本文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。脚本文件包括两部分:注释部分和程序部分%绘制sin(x)*cos(x)图形x=0:0.1:4*pi;y=sin(x).*cos(x);plot(x,y)a.m%注释部分,用以说明函数的作用及有关内容,使用help命令时显示。只显示程序中的第一句注释语例4.1 绘制sin(x)*cos(x)图形第四章第四章 Matlab 程序设计程序设计2 函数文件 函数文件是指能够接受并输出参数的m文件。函数文件的格式: function 输出形参表=函数名(输入形参表) 注释说明语句段 程序语句段说明:

5、 函数m文件第一行必须以单词function作为引导词。 函数文件的文件命名规则与变量相同,且必须是函数名 .m。 当输出形参多于一个时,须用方括号括起来,以矩阵形式表示。1. 程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。第四章第四章 Matlab 程序设计程序设计例4.2 求圆的周长和面积function l s=peri_area(r)%计算圆的周长和面积l=2*pi*r; %周长s=pi*r.2; %面积peri_area.m只有一句注释时有多句注释时第四章第四章 Matlab 程序设计程序设计4.2 Matlab的程序结构matlab的程序结构与c语言相似

6、,主要有以下三种基本结构顺序结构选择结构循环结构第四章第四章 Matlab 程序设计程序设计1 顺序结构(1) 数据的输入input 函数 调用格式 a=input(提示信息, 选项)说明:选项用于控制输入数据格式,s允许输入字符串。除了字符串输入需加s,其余一概不需要加第四章第四章 Matlab 程序设计程序设计(2) 数据的输出disp 函数调用格式 disp(输出项)说明:输出项可以是变量或字符串。1. 输出变量时,不显示变量名。第四章第四章 Matlab 程序设计程序设计sprintf 函数:字符串格式化命令主要功能是把格式化的数据写入某个字符串中调用格式 S=sprintf(格式,输

7、出项)说明: 输出格式控制同c语言1. 输出项可以是变量或表达式x=pi;m=2;sprintf(x1=%f x2=%4.3fn x3=%10.9f, (1+sqrt(5)/2,x,pi)sprintf(%d,round(x) %舍为最接近的整数 sprintf(%s,hello) S=sprintf(The array is %dx%d.,m,3) ; disp(S)第四章第四章 Matlab 程序设计程序设计例4.3 求一元二次方程ax2 +bx+c=0的根。%解一元二次方程%a b c方程系数%x1 x2为方程的根disp(pls input a b c)a=input(a=);b=in

8、put(b=);c=input(c=);d=b*b-4*a*c;x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);disp(x1 x2 is)disp(x1,x2)disp(sprintf(x1=%8.5fnx2=%8.5f,x1,x2)第四章第四章 Matlab 程序设计程序设计(3) 程序的暂停pause 函数调用格式 pause(延迟秒数)说明: 如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。 1.若要强行中止程序的运行可使用Ctrl+C命令。第四章第四章 Matlab 程序设计程序设计2 选择结构(1) if语句a

9、 单分支if语句: 格式 if 条件 语句组 endb 双分支if语句: 格式 if 条件 语句组1 else 语句组2 end第四章第四章 Matlab 程序设计程序设计2 选择结构(1) if语句c 多分支if语句 格式 if 条件1 语句组1 elseif 条件2 语句组2 elseif 条件m 语句组m else 语句组n end第四章第四章 Matlab 程序设计程序设计(2) switch语句switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 case 表达式m 语句组m otherwise 语句组nend说明:当表达式的值等于表达式1的值时,执行语句

10、组1。当表达式的值等于表达式m的值时,执行语句组m。当表达式的值不等于case所列的表达式的值时,执行语句组n。1. 当任意一个分支的语句执行完后,直接执行switch语句的下一句。第四章第四章 Matlab 程序设计程序设计(3) try语句try 语句组1catch 语句组2end说明: try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。第四章第四章 Matlab 程序设计程序设计A=1,2,3;4,5,6; B=7,8,9;10,11,12;try C=A*B;catch C=A.*B;endCerro=las

11、terr%显示出错原因test.m第四章第四章 Matlab 程序设计程序设计3 循环结构(1) for语句格式 for 循环变量=表达式1:表达式2:表达式3 循环体语句 end说明: 表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。1. 步长为1时,表达式2可以省略。第四章第四章 Matlab 程序设计程序设计(2) while语句格式 while (条件) 循环体语句 end说明: 若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。第四章第四章 Matlab 程序设计程序设计(3) break和continue语句break语句

12、: 用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。continue语句: 控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。第四章第四章 Matlab 程序设计程序设计例4.4 求100,200之间第一个能被21整除的整数。%计算100200之间第一个能被21整除的整数for n=100:200 if rem(n,21)=0 %rem(x,y) :计算x./y的余数 continue end breakendn第四章第四章 Matlab 程序设计程序设计1 文件的打开与关闭(1) 文件的打开格

13、式 fid= fopen(文件名,打开方式)说明:其中文件名用字符串形式,表示待打开的文件。常见的打开方式有:r表示对打开的文件读数据;r+表示读写;w删除已经存在的文件内容或建立一个新文件,并打开文件写;w+删除已经存在的文件内容或建立一个新文件,读写;a表示在打开的文件末尾添加数据。1. fid用于存储文件句柄值,句柄值用来标识该数据文件,其它函数可以利用它对该数据文件进行操作。第四章第四章 Matlab 程序设计程序设计(2)文件的关闭格式 sta=fclose(fid)说明: 该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回1。第四章第四章

14、Matlab 程序设计程序设计2 文件的读写操作(1)二进制文件的读写操作说明:A用于存放读取的数据。COUNT返回所读取的数据元素个数fid为文件句柄precision代表读写数据的类型:int float char等1. size为可选项,若不选用则读取整个文件内容,若选用则它的值可以是下列值: (1) N表示读取 N个元素到一个列向量。 (2) M,N表示读数据到MN的矩阵中,数据按列存放。 文件数据格式有两种形式,一是二进制文件,二是文本文件。对不同文件数据格式有两种形式,一是二进制文件,二是文本文件。对不同类型的文件读写是不同的。类型的文件读写是不同的。读读二进制文件二进制文件 格式

15、 A,COUNT=fread(fid,size, precision)第四章第四章 Matlab 程序设计程序设计说明: COUNT返回所写的数据元素个数。 fid为文件句柄。 A用来存放写入文件的数据,1. precision用于控制所写数据的类型,其形式与fread函数相同。写写二进制文件二进制文件格式 COUNT=fwrite (fid, A, precision)第四章第四章 Matlab 程序设计程序设计(2)文本文件的读写操作说明: A用以存放读取的数据。 COUNT返回所读取的数据元素个数。fid为文件句柄。 format用以控制读取的数据格式,由%加上格式符组成,常见的格式符有

16、%d,%f,%e,%c,%s等。1. size为可选项,决定矩阵A中数据的排列形式。 读读文本文件文本文件格式 A= fscanf (fid, format) A,COUNT= fscanf (fid, format, size)第四章第四章 Matlab 程序设计程序设计说明: A存放要写入文件的数据。1. 先按format指定的格式将数据矩阵A格式化,然后写入到fid所指定的文件。格式符与fscanf函数相同。写写文本文件格式 COUNT= fprintf(fid, format, A)第四章第四章 Matlab 程序设计程序设计例4.5 文件的操作clearx=0:0.1:2*pi;fi

17、d=fopen(example.mat,wb+)count=fwrite(fid,x,float)fclose(fid)fid1=fopen(example.mat,rb+)t=fread(fid1,float);y=t,sin(t);plot(t,y(:,2)fwrite(fid1,y,float)fclose(fid1)save example.dat y -ASCII第四章第四章 Matlab 程序设计程序设计clearclcx=0:0.1:2*pi;fid=fopen(ax.txt,w+);count=fprintf(fid,%4.5fn,x);fclose(fid);fid1=fop

18、en(ax.txt,r+);t=fscanf(fid1,%f);y=t,sin(t);plot(t,y(:,2);fid=fopen(ay.txt,w+);COUNT= fprintf(fid,%4.5fn, y); fclose(fid1);第四章第四章 Matlab 程序设计程序设计1 函数的调用说明: 函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。1. 函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。格式 输出实参表=函数名(输入实参表)第四章第四章 Matlab 程序设计程序设计例4.6 利用函数文件,实现直角坐标(x,

19、y)与极坐标(,)之间的转换。 %定义函数文件tran.m:function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x); %调用tran.m的命令文件exam406.mx=input(Please input x=:);y=input(Please input y=:);rho,the=tran(x,y);rhothe第四章第四章 Matlab 程序设计程序设计2 函数参数的可调性说明: 在调用函数时,用nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。1. 只要在自定义函数文件中包含这两个函数,就可以准

20、确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。 nargin 和 nargout第四章第四章 Matlab 程序设计程序设计例4.7 nargin nargout用法示例。 %定义函数文件sumproduct.m:function out1,out2=sumproduct(x,y,z)if nargin=0 disp(no input arguments),returnelseif nargin=1 sum=x;product=x;elseif nargin=2 sum=x+y;product=x.*y;elseif nargin=3 sum=x+y+z;produc

21、t=x.*y.*z;else disp(too many input arguments)endif nargout=0 returnelseif nargout=1 out1=sum;else out1=sum;out2=product;end第四章第四章 Matlab 程序设计程序设计例4.7 nargin nargout用法示例。 %调用sumproduct.msumproductx,y=sumproduct(1,2,3)x,y=sumproduct(1)x=sumproduct(1,2,3)x,y=sumproduct(1,2,3,4)第四章第四章 Matlab 程序设计程序设计3 定义全局变量说明: 全局变量名一般用大写。1. 自定义函数文件中的变量,作用区域仅在函数内部。对于自定义函数中的一些公用变量,可以定义成全局变量,在主程序中统一定义.格式 global X第四章第四章 Matlab 程序设计程序设计例4.8 global用法示例。function y=Ep(x)%计算弹性势能global Ky=K*x.2/2;function f=F(x)%计算弹力global Kf=K*x; %计算exam408.mglobal KK=0.01;x=input(Please input x=);ep=Ep(x)f=F(x)第四章第四

温馨提示

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

评论

0/150

提交评论