Matlab编程介绍.ppt_第1页
Matlab编程介绍.ppt_第2页
Matlab编程介绍.ppt_第3页
Matlab编程介绍.ppt_第4页
Matlab编程介绍.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、MATLAB编程介绍,MATLAB中各种命令可以完成许多单一的任务,对于某些较为复杂的问题,仅靠现有的命令或函数来解决,往往是难以直接达到目的。为此,要运用MATLAB编程语言编制程序,形成M-文件。MATLAB中每一个命令都是一个M-文件。 MATLAB程序(M-文件)有两种形式,一种是可直接运行的命令文件,另一种是可供调用的函数文件,这两种文件的扩展名相同,均为“.m”,故称为M-文件。,MATLAB编程介绍,MATLAB程序编辑是在编辑窗口(MATLAB Editor/Debugger)中进行,程序运行结果或错误 信息显示在命令窗口(Command Windows)中。,1 、编写M-文

2、件的步骤,(1)打开程序编辑窗口: 点击MATLAB命令窗口工具条 上的New File图标,或点击命令窗口中的File菜单,点 击选项中的New,选择M-file, 就可打开MATLAB程序编 辑窗口(MATLAB Editor/Debugger),用户可在窗口中 编写、修改程序。,(2)保存编写的程序:在程序编写过程中,或程序编写完成后,点击工具条上的Save图标,或按F2键,再选择当前工作的路径,输入自己定义的文件名,点击保存保存文件,保存后文件名后自动加上“.m”后缀,即为M-文件。, 文件名要以字母开头,中间不含空格和标点符号,且不超过8个 字符;不能用数字和专用变量名作为文件名,如

3、1,pi,ans,eps等。, 程序通常保存在文件夹:MatlabWork中,此路径为MATLAB 软件默认路径。, 程序若要存放到其它文件夹中,则要添加该路径到MATLAB的路径设置中,否则程序不能连接执行。,点击编辑窗工具条上File菜单,选择Set Path.,此时打开路径设置窗口,再点击Add Foider.,选择你所使用的文件夹(若没有则要先新建),选定后该路径自动显示在列表的第一行或最后一行,再点击 Save 保存即可。,具体操作:,2、 运行M-文件,运行一个已经编写好且存盘的M-文件有两种方法。,在MATLAB编辑窗口中对正在编辑的M-文件,保存后可直接点击工具条上的Debug

4、中的Run命令运行或按F5键,即可运行当前程序,其运行结果或信息显示在命令窗口,此时,用户可以切换到命令窗口进行查看,之后可回到编辑窗对程序进行修改、重新保存再次运行。,方法一:,在MATLAB命令窗口中直接输入文件名回车,即可运行相应的M-文件。其运行结果或程序运行中的错误信息等显示在命令窗口,此时,用户若要修改程序则可以切换到编辑窗口进行修改,修改后重新保存。,方法二:,当对程序进行修改保存时,当前程序将覆盖原来程序,此时若要想保存为另外的文件,则要点击工具条上File菜单,选择Save as.,另取文件名保存即可。,注意:,例. 分别建立命令文件和函数文件,将华氏温度f转换 为摄氏温度c

5、。,首先建立命令文件并以文件名function1.m存盘。 clear; %清除工作空间中的变量 f=input(Input Fahrenheit temperature:); c=5*(f-32)/9 然后在MATLAB的命令窗口中输入function1,将会执行该命令文件,执行情况为: Input Fahrenheit temperature:73 c = 22.7778,程序1:,首先建立函数文件function2.m: function c=function2(f) c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件: clear; y=input(Input Fah

6、renheit temperature:); x=function2(y) 输出情况为: Input Fahrenheit temperature:70 c = 21.1111 x = 21.1111,程序2:,例: 建立同时计算,,,的函数。, function y1 , y2=fun1(a , b , n), y1=(a+b).n ;, y2=(a-b).n;,编写完成后用函数名(fun1)作为文件名存盘, 形成 一个M-文件fun1.m可以进行调用。,MATLAB程序的基本结构,MATLAB提供了三种基本的程序结构:顺序结构、 循环结构和选择结构。一个MATLAB程序就是使计算机 实现某

7、一类功能任务的命令集。用户编制程序时,需要 按照解决问题的逻辑步骤和求解算法,用MATLAB的语 句和函数,按照三种基本结构逐条编写,一般一行一条 语句,便于调试和查找错误。,其中功能处理部分是核心,主要是根据处理问题的 逻辑步骤,采用循环迭加、判断推理、分步计算等 来解决问题。,程序一般包含三个部分:,数据输入、功能处理、结果输出,程序编写完成后,需要存盘,形成永久性文件, 之后可以随时对它进行调用或修改。,M-文件中的输入、输出方式,1、 输入方式,s=Any string!; %输入字符串,(1)程序中直接赋值,x=2; %输入单个值,a=1,2,3;4,5,6;7,8,0; %输入矩阵

8、(a为3阶方阵),(2)程序运行时赋值,变量 = input( 提示符号串 );,格式:,功能:,从键盘接收数据并赋予等号左边变量。其中 提示符号串 是在命令窗口中的提示。,y=input(Please input y=); %提示语句输入,如:,x=input( x=);,当执行到此语句时,暂停程序运行,在命令窗口中光标将停留在提示符号串后闪烁,等待从键盘接收数据。用户从键盘输入数据并按回车键确认,继续程序运行。其优点是每次运行可以输入不同数据,实现人机对话。,如果在input函数调用时采用s选项,则允许用户输入一个 字符串。例如,想输入一个人的姓名,可采用命令:,xm=input(What

9、s your name?,s);,2、 输出方式,(1)直接输出,x %变量后无分号“;”,变量直接输出,(2)格式控制输出(fprintf命令),fprintf(x=%.3f y=%.0fn , a,b); %按指定格式输出,格式:,其中,单引号内为格式说明符:%前为提示符,%.3f为数据格式符, 通常与单引号后面的数据相对应, f指显示一实数,.3表示显示的数小数 点后3位,小数点前整数部分不限。 %.0f指显示一实数其小数部分显示 0位,结果只显示整数部分。n为换行命令符,即一行显示结束后,光标 自动换到下一行。a,b为要显示的变量,它们与前面的格式符相对应。,disp(a); % a可

10、以是矩阵、数组和单个值,例:,fprintf(x=%.5f y=%.0fn, pi, sqrt(2);,结果为: x=3.14159 y=1,x=input(Input x please.); y=input(Input y please.); z=x; x=y; y=z; disp(x); disp(y);,例:输入x,y的值,并将它们的值互换后输出。,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); disp(x1=,num2str(x(1),x2=,num2

11、str(x(2);,例:求一元二次方程ax2 +bx+c=0的根。,a=1 b=2 c=3 x1=-1+1.4142i,x2=-1-1.4142i,结果为:,num2str:实数转换为字符串型,MATLAB循环结构与应用,循环结构是MATLAB程序中最常用的结构之一,它 是让计算机按照一定的条件多次重复执行某一命令集, 从而实现诸如累加、迭代、分层计算等功能。MATLAB 软件提供了两种循环结构:,有限次循环for-end结构和条件循环while-end结构。,1、有限次循环(for-end)结构,for n=n1 : step : n2 commands-1 end commands-2,格

12、式:,其中n为循环变量(自己定义),n1为起始值,step为步长,n2为结束值;commands-1为循环体(循环模块),commands-2为后序命令 。,循环变量n从n1开始,执行commands-1,遇到end时n自动增加 step步长,同时与n2比较,当n不超过n2时重复执行commands-1;当 n超过n2时转向执行commands-2。当步长为1时,格式中step可以省略, 即为for n=n1 : n2格式。在设计for-end循环结构时,应在循环模块内充 分利用循环变量的变化规律,开展相关的运算。另外,结构中for与end 要成对出现。,作用:,例:求正整数n的阶乘:p=12

13、 3 n = n!,,并求出n=20时的结果。,分析:,这是一个逐次乘积的过程,从1开始存放在积p中, 再乘以下一个正整数之后再取代积p,依次类推,直到 乘至第n个数。因此,使用循环结构来实现。,clear;clc; n=20; %赋值给定正整数 p=1; %设定存放阶乘的变量p并赋初值1 for i=1:n %定义循环变量i从1到n,以1为步长,即连续正整数 p=p*i; %先计算右端乘积后再赋给左端的变量p fprintf(i=%.0f, p=%.0fn,i,p) %逐行显示 end %循环结构结束,问题:,是否可以考虑利用input命令对n进行赋值,随时改变其大小。 如果可以,请修改上述

14、程序并运行。,2、 条件循环(while-end)结构,格式:,while (conditions) commands-1; end commands-2;,当条件 conditions为真时,执行commands-1,当遇 到end时,自动检测条件;当条件 conditions不满足时,转 向执行commands-2。在设计while-end循环结构时,应在 确保在执行了一定次数之后可以结束循环;否则,就成了 “死循环”,即无限次重复执行循环。另外,结构中while与 end要成对出现。,作用:,关系运算,MATLAB提供了6种关系运算符:,(小于),=(小于或等于),(大于),=(大于或等

15、于),=(等于),=(不等于),关系、逻辑运算,关系运算符的运算法则为:, 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。, 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。, 当参与比较的一个是标量,而另一个是矩阵时,则把标量 与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元 素比较结果。最终的关系运算的结果是一个维数与原矩阵相同 的矩阵,它的元素由0或1组成。, 设参与逻辑运算的是两个标量a和b,那么,逻辑运算

16、,MATLAB提供了3种逻辑运算符:当a非零时,运算结果为0。, 若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。, 若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成。, 逻辑非是单目运算符,也服从矩阵运算规则。, 在算术、关系、逻辑运算中,算术运算优先级最高,逻辑 运算优先级最低。,例:根据e1+1+1/2!+1/3!+1/n! 求e的近似值,要求精确到小数点后8位。,分析:,这里不能给定n的大小

17、,但注意到第n次近似值和第n-1次近似值的差:,。现要精确到小数点后8位,则只需要,因此,可以以此为条件运用条件循环来实现。,,,注意:在MATLAB中,用科学记数法1.0e-8来表示。,clear;clc; p=1; %设定存放阶乘的变量p并赋初值1 s=1; %设定存放累加和的变量s并赋初值1 r=1; %设定前后两次近似值的误差r并赋初值1 k=0; %设定构造连续正整数的变量k赋初值0又为循环次数 while r=1.0e-8 %根据近似值的精度r大小来定义条件循环 k=k+1; %转换下一个正整数,或开始统计循环次数 p=p*k; %计算k的阶乘p r=1/p; %计算前后两次近似值

18、的误差r s=s+r; %计算e的近似值s fprintf(k=%.0f, s=%.8fn,k,s) %逐行显示出e的近似值 end %循环结构结束,MATLAB选择结构,1、单项选择判断(if-end)结构,格式:,if (condition) commands-1; end commands-2;,作用:,若条件condition成立,则执行commands-1, 再顺序执行commands-2;否则,跳过commands-1, 直接执行commands-2.,2 、多项选择判断(if-else-end)结构,格式:,if (condition1) commands-1; elseif (

19、condition2) commands-2; else commands-3; end commands-4;,作用 :,若条件condition1成立,则执行commands-1,再转向end,顺序执行 后续的命令commands-4;否则判断条件condition2是否成立,若成立,则执行commands-2,再转向end执行后续的命令;若条件ondition1和条件condition2均不成立,则执行命令集commands-3,再顺序向下执行。,x=input(请输入x的值:); if x=0 y= (x+sqrt(pi)/exp(2); else y=log(x+sqrt(1+x*x

20、)/2; end y,例: 计算分段函数的值。,例:编写一个函数将百分制成绩转换为优(A),良(B),中(C),差(D)四等级.,分析:,按照通常的等级划分,一般90-100分为优,78-89分为良,60-77分为中,60分以下的为差,因此,可以用多项选择判断结构来实现。,function jb=grade(fs) %定义函数grade,输入变量为分数fs,返回值为等级A,B,C,D if fs=90 %判断分数fs是否处在优秀级别上 jb= A ; %定义为A级 elseif fs=78 %判断分数fs是否处在良好级别上 jb= B ; %定义为B级 elseif fs=60 %判断分数fs

21、是否处在合格级别上 jb= C ; %定义为C级 else %分数fs不处于以上任何级别上 jb= D ; %定义为D级 end %选择结构结束,3、switch语句,switch语句根据表达式的取值不同,分别执行不同的 语句,其语句格式为:,switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 case 表达式m 语句组m otherwise 语句组n end,当表达式的值等于表达式1的值时,执行语句组1,当表达式的值等于表达式2的值时,执行语句组2,当表达式的值等于表达式m的值时,执行语句组m,当表达式的值不等于case所列的表达式的值时,执行语句组n。当任意一

22、个分支的语句执行完后,直接执行switch语句的下一句.,clear n=input(input n=); switch mod(n,5) case 0 fprintf(%d 是5的倍数,n) otherwise fprintf(%d 不是5的倍数,n) end,input n=46 46 不是5的倍数,例: 判断任意给定的整数n是否为5的倍数,并输出判断结果。,MATLAB程序流程控制,在编写程序过程中,根据问题求解的要求,往往需要在一定条件下跳出当前循环,或终止程序运行,或暂停程序运行等,这也就是在编制程序过程中对程序流程进行控制。MATLAB软件提供了相应流程控制语句:break、return和pause等。,1、 break语句,break 语句导致包含break 指令的最内层while或for循环的终止。通常是根据循环内部另设的某种条件是否满足来决定是否跳出循环,因此,常和if判断一起使用。

温馨提示

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

评论

0/150

提交评论