实验3matlab编程介绍与循环结构_第1页
实验3matlab编程介绍与循环结构_第2页
实验3matlab编程介绍与循环结构_第3页
实验3matlab编程介绍与循环结构_第4页
实验3matlab编程介绍与循环结构_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、实验实验3 matlab编程介绍与循环结构编程介绍与循环结构3.1.1 建立、运行M-文件的步骤o1. 建立建立M-文件的步骤文件的步骤o(1) 打开程序编辑窗口,点击打开程序编辑窗口,点击matlab命令窗口工具条上的命令窗口工具条上的New File图标,或点击命令窗口中的图标,或点击命令窗口中的File菜单,点击选项菜单,点击选项中的中的New,选择,选择M-file,就可以打开,就可以打开打开打开MATLAB程序编辑程序编辑窗口,用户可在窗口中输入、编辑程序。窗口,用户可在窗口中输入、编辑程序。o (2) 保存程序:在程序输入过程中或程序输入完成后,点击保存程序:在程序输入过程中或程序

2、输入完成后,点击工具条上的工具条上的Save图标,或点击图标,或点击File菜单下的菜单下的Save,在弹出,在弹出的窗口中输入自己定义的文件名,点击的窗口中输入自己定义的文件名,点击保存保存保存文件。此保存文件。此时,程序被保存在默认路径指定的时,程序被保存在默认路径指定的work文件夹中文件夹中(初学者最初学者最好不要改变这个路径,避免添加路径步骤好不要改变这个路径,避免添加路径步骤),保存后的文件,保存后的文件名自动加上名自动加上“.m”后缀,即为后缀,即为M-文件。文件。o注意:注意:o文件名是要以字母开头中间不含空格和标点符号的字符串;文件名是要以字母开头中间不含空格和标点符号的字符

3、串;不能用汉字、数字和专用变量名作为文件名,如不能用汉字、数字和专用变量名作为文件名,如1,11,pi,ans等。等。o程序通常保存在文件夹:程序通常保存在文件夹:MATLAB6p5work中,此路径为中,此路径为MATLAB的默认路径。的默认路径。o程序若要存放到其他文件夹中,则要添加该路径到程序若要存放到其他文件夹中,则要添加该路径到MATLAB的路径设置中,否则程序不能执行。具体操作:点击编辑窗的路径设置中,否则程序不能执行。具体操作:点击编辑窗工具条上工具条上File菜单,选择菜单,选择Set Path.,此时打开路径设置窗口,此时打开路径设置窗口,再点击再点击Add Foider.,

4、选择你所使用的文件夹,选择你所使用的文件夹(若没有,则要先若没有,则要先新建新建),选定后该路径自动显示在列表的第一行或最后一行,选定后该路径自动显示在列表的第一行或最后一行,再点击再点击Save保存即可。保存即可。o2. 运行运行M-文件文件o运行运行M-文件有两种方法:文件有两种方法:o方法一:在方法一:在MATLAB编辑窗口中对正在编辑的编辑窗口中对正在编辑的M-文件,保存后文件,保存后可直接点击工具条上的可直接点击工具条上的Debug中的中的Run命令命令(或按或按F5键键),即可运,即可运行当前程序。其运行结果或信息显示在命令窗口,此时,用户行当前程序。其运行结果或信息显示在命令窗口

5、,此时,用户可以切换到命令窗口进行查看,之后可回到编辑窗对程序进行可以切换到命令窗口进行查看,之后可回到编辑窗对程序进行修改,重新保存再次运行。修改,重新保存再次运行。o方法二:在方法二:在MATLAB命令窗口中直接输入文件名回车,即可运命令窗口中直接输入文件名回车,即可运行相应的行相应的M-文件。其运行结果或程序运行中的错误信息等显示文件。其运行结果或程序运行中的错误信息等显示在命令窗口,此时,用户若要修改程序则可以切换到编辑窗口在命令窗口,此时,用户若要修改程序则可以切换到编辑窗口进行修改,修改后重新保存。进行修改,修改后重新保存。o注意:当对程序进行修改保存时,当前程序将覆盖原来程序。注

6、意:当对程序进行修改保存时,当前程序将覆盖原来程序。此时若想保存为另外的文件,则要点击工具条上的此时若想保存为另外的文件,则要点击工具条上的File菜单,菜单,选择选择Save as.,另取文件名保存即可。,另取文件名保存即可。o3.1.2 MATLAB程序的基本结构程序的基本结构o程序是使计算机实现某一类功能任务的命令集。程序是使计算机实现某一类功能任务的命令集。MATLAB提供了三种基本的程序结构:提供了三种基本的程序结构:顺序结构、循环结构和选择结顺序结构、循环结构和选择结构构。因此,。因此,MATLAB中除了按正常顺序执行程序中的命令中除了按正常顺序执行程序中的命令和函数以外,有多种控

7、制程序流程的语句,这些语句包括和函数以外,有多种控制程序流程的语句,这些语句包括for,while,if,switch,try,continue,break,return等。等。用户编制程序时,需要按照解决问题的逻辑步骤和求解算法,用户编制程序时,需要按照解决问题的逻辑步骤和求解算法,用用MATLAB提供的这些语句和函数,按照三种基本结构逐提供的这些语句和函数,按照三种基本结构逐条编写。一般一行一条语句,以便调试和查找错误。条编写。一般一行一条语句,以便调试和查找错误。o程序一般包含三个部分:数据输入、功能处理和结果输出。程序一般包含三个部分:数据输入、功能处理和结果输出。其中功能处理部分是核

8、心,主要是根据处理问题的逻辑步骤,其中功能处理部分是核心,主要是根据处理问题的逻辑步骤,采用循环迭代、判断推理、分步计算等来解决问题。采用循环迭代、判断推理、分步计算等来解决问题。o3.1.3 M-文件的输入、输出方式文件的输入、输出方式oM-文件的输入、输出方式同前面所讲的命令窗中文件的输入、输出方式同前面所讲的命令窗中的输入、输出方式基本相同,具体如下:的输入、输出方式基本相同,具体如下:o1. 输入方式输入方式o(1) 程序中直接赋值程序中直接赋值ox=2 ;oa=1 2 3 ;4 5 6 ;7 8 0 ;os=Any string !o3. 程序运行时赋值程序运行时赋值o格式:变量格式

9、:变量=input(提示符号串提示符号串);o功能功能: 从键盘接收数据并赋予等号左边变量。其中从键盘接收数据并赋予等号左边变量。其中提提示符号串示符号串是在命令窗口中的提示。如:是在命令窗口中的提示。如:oX=input(x=);oY= input(Please input y=); %提示语句输入提示语句输入o当执行此语句时,暂停程序运行,在命令窗口中光标当执行此语句时,暂停程序运行,在命令窗口中光标将停留在提示符号串后闪烁,等待从键盘接收数据。将停留在提示符号串后闪烁,等待从键盘接收数据。用户从键盘输入数据并按回车键确认,继续程序运行。用户从键盘输入数据并按回车键确认,继续程序运行。其优

10、点是,每次运行可以输入不同数据,实现人机对其优点是,每次运行可以输入不同数据,实现人机对话。话。o2. 输出方式输出方式o(1)直接输出直接输出o% 变量后无分号变量后无分号“;”,变量直接输出,变量直接输出odisp(a); % a可以是标量、向量、矩阵可以是标量、向量、矩阵o(2) 格式控制输出格式控制输出o格式:格式:fprintf(x=%.3f y=%.0fn,a,b); %按指定格式输出;按指定格式输出;o其中,单引号内为格式说明符,其中,单引号内为格式说明符,%前为提示符,前为提示符,%.3f为数据为数据格式符,通常格式符,通常o与单引号后面的数据项对应,与单引号后面的数据项对应,

11、f指显示一个实数,指显示一个实数,3表示显示表示显示的数小数点后的数小数点后3位,小数点前整数部分不限。位,小数点前整数部分不限。%.0f指显示一实指显示一实数其小数部分显示数其小数部分显示0位,结果只显示整数部分。位,结果只显示整数部分。n为换行符,为换行符,即一行显示结束后,光标自动换到下一行。即一行显示结束后,光标自动换到下一行。a、b为要显示的为要显示的变量,它们与前面的格式符相对应。变量,它们与前面的格式符相对应。o例如:例如:ofprintf(x=%.5f y=%.0fn,pi,sqrt(2);ox=3.14159 y=1ofprintf(x=%.5f y=%.0fn ,sqrt(

12、2), pi);ox=1.41421 y=33.2 MATLAB循环结构与应用循环结构与应用o循环结构是循环结构是MATLAB程序中最常见的结构程序中最常见的结构之一,它是让计算机按照一定的条件多次重之一,它是让计算机按照一定的条件多次重复执行某一命令集,从而实现诸如累加、迭复执行某一命令集,从而实现诸如累加、迭代、分层计算等功能。代、分层计算等功能。MATLAB软件提供软件提供了两种循环结构:有限次循环了两种循环结构:有限次循环for-end结构和结构和条件循环条件循环while-end结构。结构。3.2.1 有限次循环有限次循环(for-end)结构结构o格式:格式:o for n = n

13、1: step: n2o commands-1o endocommands-2o其中其中n为循环变量为循环变量(自己定义自己定义),n1为起始值,为起始值,step为步长,为步长,n2为结束值;为结束值;commands-1为循环体为循环体(循环模块循环模块),commands-2为后续命令。为后续命令。o作用:循环变量作用:循环变量n从从n1开始,执行开始,执行commands-1,遇到,遇到end时时n自动增加自动增加step步长,同时与步长,同时与n2比较,当比较,当n不超过不超过n2时重复执时重复执行行commands-1;当;当n超过超过n2时转向执行时转向执行commands-2。

14、当步。当步长为长为1时可省略。时可省略。o在设计在设计for-end循环结构时,应在循循环结构时,应在循环模块内充分利用循环变量的变化环模块内充分利用循环变量的变化规律,开展相关运算。另外,结构规律,开展相关运算。另外,结构中中for与与end要成对出现。要成对出现。o例例3-1:求:求n(n=100)个奇数的和:)个奇数的和:s=1+3+5+(2n-1).oclear;clc; %清除内存变量,清理命令窗口清除内存变量,清理命令窗口on=100; %赋值给定奇数的个数赋值给定奇数的个数os=0; %设定存放和的变量设定存放和的变量s并赋初值并赋初值0ofor i=1:n o%定义循环变量定义

15、循环变量i从从1到到n,以,以1为步长,即为奇数序号为步长,即为奇数序号os=s+(2*i-1); o%先计算右端奇数并累加后再赋给左端的变量先计算右端奇数并累加后再赋给左端的变量sofprintf(i=%.0f, s=%.0fn,i,s) o %逐行显示出累加求和的过程逐行显示出累加求和的过程oend % 循环体结束循环体结束oi=1, s=1i=1, s=1ooi=98, s=9604i=98, s=9604oi=99, s=9801i=99, s=9801oi=100, s=10000i=100, s=10000问题问题1:可否用从可否用从1开始的奇数作为循环变量?开始的奇数作为循环变量

16、?oclear;clc; %清除内存变量,清理命令窗口清除内存变量,清理命令窗口on=2*100-1; %赋值给定奇数的个数赋值给定奇数的个数os=0; %设定存放和的变量设定存放和的变量s并赋初值并赋初值0ofor i=1:2:n o%定义循环变量定义循环变量i从从1到到n,以,以1为步长,即为奇数序号为步长,即为奇数序号os=s+i; o%先计算右端奇数并累加后再赋给左端的变量先计算右端奇数并累加后再赋给左端的变量o oend % 循环体结束循环体结束ofprintf(i=%.0f, s=%.0fn,i,s) o%逐行显示出累加求和的过程逐行显示出累加求和的过程oclear;clc; %清

17、除内存变量,清理命令窗口清除内存变量,清理命令窗口om= input(请输入第请输入第m个奇数个奇数)on=2*m-1; %赋值给定奇数的个数赋值给定奇数的个数os=0; %设定存放和的变量设定存放和的变量s并赋初值并赋初值0ofor i=1:2:n o%定义循环变量定义循环变量i从从1到到n,以,以1为步长,即为奇数序号为步长,即为奇数序号os=s+i; o%先计算右端奇数并累加后再赋给左端的变量先计算右端奇数并累加后再赋给左端的变量o oend % 循环体结束循环体结束ofprintf(i=%.0f, s=%.0fn,i,s) o%逐行显示出累加求和的过程逐行显示出累加求和的过程问题问题2

18、:不显示求和过程,只显示最后结果?不显示求和过程,只显示最后结果?oclear;clc; %清除内存变量,清理命令窗口清除内存变量,清理命令窗口on=100; %赋值给定奇数的个数赋值给定奇数的个数os=1; %设定存放和的变量设定存放和的变量s并赋初值并赋初值0ofor i=2:n o%定义循环变量定义循环变量i从从1到到n,以,以1为步长,即为奇数序号为步长,即为奇数序号os=s+(2*i-1); o%先计算右端奇数并累加后再赋给左端的变量先计算右端奇数并累加后再赋给左端的变量soend ofprintf(i=%.0f, s=%.0fn,i,s) o%显示出最后结果显示出最后结果例例3-2

19、:求正整数:求正整数n的阶乘:的阶乘:p=12 3 n = n!,并求出,并求出n=20时的结果。时的结果。o分析:这是一个逐次乘积的过程,从分析:这是一个逐次乘积的过程,从1开始开始存放在积存放在积p中,再乘以下一个正整数之后再中,再乘以下一个正整数之后再取代积取代积p,以此类推,直到乘至第,以此类推,直到乘至第n个数,因个数,因此,使用循环结构来实现。此,使用循环结构来实现。oi=1, p=1oi=2, p=2oi=3, p=6oi=4, p=24oi=5, p=120oi=6, p=720oi=7, p=5040oi=8, p=40320oi=9, p=362880oi=10, p=36

20、28800oi=11, p=39916800oi=12, p=479001600oi=13, p=6227020800oi=14, p=87178291200oi=15, p=1307674368000oi=16, p=20922789888000oi=17, p=355687428096000oi=18, p=6402373705728000oi=19, p=121645100408832000oi=20, p=2432902008176640000只显示最后一个数的阶乘只显示最后一个数的阶乘oclear;clc; %清除内存变量,清理命令窗口清除内存变量,清理命令窗口on=20; %赋值给

21、定正整数赋值给定正整数op=1; %设定存放阶乘的变量设定存放阶乘的变量p并赋初值并赋初值1ofor i=1:n o%定义循环变量定义循环变量i从从1到到n,以,以1为步长,即连续正整数为步长,即连续正整数op=p*i; %先计算右端乘积后再赋给左端的变量先计算右端乘积后再赋给左端的变量poend %循环结构结束循环结构结束ofprintf(i=%.0f, p=%.0fn,i,p) o%显示出显示出i和和p (注意该行要不要注意该行要不要“;”都会输出都会输出)oi=20, p=2432902008176640000fprintf(i=%.0f, p=%.0fn,i,p) 可改为:可改为:i,

22、poclear;clc; %清除内存变量,清理命令窗口清除内存变量,清理命令窗口on=20; %赋值给定正整数赋值给定正整数op=1; %设定存放阶乘的变量设定存放阶乘的变量p并赋初值并赋初值1ofor i=1:n o%定义循环变量定义循环变量i从从1到到n,以,以1为步长,即连续正整数为步长,即连续正整数op=p*i; %先计算右端乘积后再赋给左端的变量先计算右端乘积后再赋给左端的变量poend %循环结构结束循环结构结束oi,po%fprintf(i=%.0f, p=%.0fn,i,p) 可改为:可改为:i,poi=20, p = 2.4329e+018利用利用input命令对命令对n进行

23、赋值,随时改变其进行赋值,随时改变其大小。大小。oclear;clc; %清除内存变量,清理命令窗口清除内存变量,清理命令窗口op=1; %设定存放阶乘的变量设定存放阶乘的变量p并赋初值并赋初值1on= input(Please input n=)ofor i=1:n %定义循环变量定义循环变量i从从1到到n,以,以1为步长,即为步长,即连续正整数连续正整数op=p*i; o%先计算右端乘积后再赋给左端的变量先计算右端乘积后再赋给左端的变量poend %循环结构结束循环结构结束ofprintf(i=%.0f, p=%.0fn,i,p) %显示出显示出ioPlease input n=oPlea

24、se input n=10on =o 10oi=10, p=3628800例例3-3:根据麦克劳林公式可以得到:根据麦克劳林公式可以得到e1+1+1/2!+1/3!+1/n!,试求,试求e的近似值。的近似值。oclear;clc; %清除内存变量,清理命令窗口清除内存变量,清理命令窗口on=10; %赋值给定正整数赋值给定正整数op=1; %设定存放阶乘的变量设定存放阶乘的变量p并赋初值并赋初值1os=1; %设定存放累加和的变量设定存放累加和的变量s并赋初值并赋初值1ofor i=1:n %定义循环变量定义循环变量i从从1到到n,以,以1为步长为步长op=p*i; %先计算右端乘积后再赋给左

25、端的变量先计算右端乘积后再赋给左端的变量p,此时,此时p为为i的阶乘的阶乘os=s+1/p; o%先计算右端阶乘倒数的累加后再赋给左端的变量先计算右端阶乘倒数的累加后再赋给左端的变量sofprintf(i=%.0f, s=%.8fn,i,s) o%逐行显示出第逐行显示出第i次次e的近似值的近似值o end %循环结构结束循环结构结束oi=1, s=2.00000000oi=2, s=2.50000000oi=3, s=2.66666667oi=4, s=2.70833333oi=5, s=2.71666667oi=6, s=2.71805556oi=7, s=2.71825397oi=8, s

26、=2.71827877oi=9, s=2.71828153oi=10, s=2.71828180o问题:如何有效控制问题:如何有效控制e的近似值的精度,或的近似值的精度,或者说如何修改程序使其根据近似值的精度要者说如何修改程序使其根据近似值的精度要求自动控制循环次数?求自动控制循环次数?3.2.2 条件循环条件循环(while-end)结构结构o格式:格式:while(conditions)o Commands-1;o End o Commands-2;o作用:当条件作用:当条件conditions成立即条件为真时,执行成立即条件为真时,执行commands-1,当遇到,当遇到end时,自动检

27、测条件;当条时,自动检测条件;当条件件conditions不满足时,转向执行不满足时,转向执行commands-2。在设。在设计计while-end循环结构时,应在循环模块内有改变循环结构时,应在循环模块内有改变conditions的内容,确保在执行了一定次数之后可以的内容,确保在执行了一定次数之后可以结束循环;否则,就成了结束循环;否则,就成了“死循环死循环”,即无限次重复,即无限次重复执行循环。另外,执行循环。另外,结构中结构中while与与end要成对出现要成对出现。例例3-4:对于数列:对于数列 ,求其前,求其前n项和项和不超过不超过1000时的时的n的值及和的值及和.o分析:用循环结

28、构来实现,但每次累加前要判断大小。分析:用循环结构来实现,但每次累加前要判断大小。oclear;clc; %清除内存变量,清理命令窗口清除内存变量,清理命令窗口on=0; %设定正整数并赋初值设定正整数并赋初值0os=0; %设定存放累加和的变量设定存放累加和的变量s并赋初值并赋初值0owhile s=1000 o %用累加和用累加和s与与1000进行比较作为循环条件进行比较作为循环条件on=n+1; %改变改变n为连续正整数为连续正整数os=s+sqrt(n); o%先计算右端开方数的累加后再赋给左端的变量先计算右端开方数的累加后再赋给左端的变量sofprintf(n=%.0f, s=%.4

29、fn,n,s) o%逐行显示正整数及部分和逐行显示正整数及部分和oend %循环结构结束循环结构结束, 2 , 1,nnoon=128, s=970.8891on=129, s=982.2469on=130, s=993.6487on=131, s=1005.0942问题:从结果上看,最后一行的结果并不是要求的答案,问题:从结果上看,最后一行的结果并不是要求的答案,而倒数第二行是所求问题的解。这是为什么?如何修改程而倒数第二行是所求问题的解。这是为什么?如何修改程序来避免这种情况?序来避免这种情况?oclear;clc; %清除内存变量,清理命令窗口清除内存变量,清理命令窗口on=0; %设定正整数并赋初值设定正整数并赋初值0os=0; %设定存放累加和的变量设定存放累加和的变量s并赋初值并赋初值0owhile s=1000 %用累加和用累加和s与与1000进行比较作为循环条件进行比较作为循环条件on=n+1; %改变改变n为连续正整数为连续正整数oa=s;os=s+sqrt(n); o%

温馨提示

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

评论

0/150

提交评论