MATLAB文件与程序调试_第1页
MATLAB文件与程序调试_第2页
MATLAB文件与程序调试_第3页
MATLAB文件与程序调试_第4页
MATLAB文件与程序调试_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、M文件与程序调试文件与程序调试 在入门阶段,通常在行命令模式下工作。键在入门阶段,通常在行命令模式下工作。键 入一行命令后,让系统立即执行该命令。用入一行命令后,让系统立即执行该命令。用 这种方法时,程序可读性差且难以存储。对这种方法时,程序可读性差且难以存储。对 于复杂的问题,应编成可存储的程序文于复杂的问题,应编成可存储的程序文 件,件,再让再让MATLABMATLAB执行该程序。执行该程序。 MATLABMATLAB的程序类型有三种:的程序类型有三种: 直接在命令窗口下执行的直接在命令窗口下执行的MATLABMATLAB指令;指令; 可以存取的可以存取的M M文件,也叫文件,也叫脚本文件

2、脚本文件。 最后一种是最后一种是函数(函数(functionfunction)文件。)文件。 后两种都是以后两种都是以.m.m为后缀的为后缀的M M文件。文件。一、一、MATLAB程序程序后面的内容是程序的注解,注解使程序更具可读性。后面的内容是程序的注解,注解使程序更具可读性。在主程序开头用在主程序开头用clearclear指令清除变量,以消除工作空间中指令清除变量,以消除工作空间中其他变量对程序运行的影响。但注意在子程序中不要用其他变量对程序运行的影响。但注意在子程序中不要用clearclear。参数值要集中放在程序的开始部分,以便维护。应充分利参数值要集中放在程序的开始部分,以便维护。应

3、充分利用用MATLABMATLAB工具箱提供的指令来执行所要进行的运算,在语工具箱提供的指令来执行所要进行的运算,在语句行之后输入分号使其及中间结果不在屏幕上显示,以提句行之后输入分号使其及中间结果不在屏幕上显示,以提高执行速度。高执行速度。程序尽量模块化,也就是采用主程序调用子程序的方法,程序尽量模块化,也就是采用主程序调用子程序的方法,将所有子程序合并在一起来执行全部的操作。将所有子程序合并在一起来执行全部的操作。充分利用充分利用DebuggerDebugger来进行程序的调试(设置断点、单步执来进行程序的调试(设置断点、单步执行、连续执行)。行、连续执行)。设置好设置好MATLABMAT

4、LAB的工作路径,以便程序运行。的工作路径,以便程序运行。二、二、 MATLAB程序的基本设计原则程序的基本设计原则说明说明清除命令清除命令:清除:清除workspaceworkspace中的变量和图形(中的变量和图形(clear,closeclear,close)定义变量定义变量:包括全局变量的声明及参数值的设定:包括全局变量的声明及参数值的设定逐行执行命令逐行执行命令:指:指MATLABMATLAB提供的运算指令或工具箱提供的运算指令或工具箱 提供的专用命令提供的专用命令控制循环控制循环 包含包含:for,if,then,switch,while :for,if,then,switch,w

5、hile 等语句等语句 逐行执行命令逐行执行命令 endend绘图命令绘图命令:将运算结果绘制出来:将运算结果绘制出来三、三、 MATLAB程序体的基本组成结构程序体的基本组成结构复杂程序还需要调用子程序,或与其他应用程序结合起来。复杂程序还需要调用子程序,或与其他应用程序结合起来。在编辑环境中,文字的不同颜色显示表明文字的不同在编辑环境中,文字的不同颜色显示表明文字的不同属性。属性。 绿色:注解绿色:注解;黑色:程序主体黑色:程序主体;红色:属性值的设定;红色:属性值的设定;蓝色:控制流程。蓝色:控制流程。在运行程序之前,必须设置好在运行程序之前,必须设置好MATLABMATLAB的工作路径

6、,的工作路径,使使得所要运行的程序及运行程序所需要的其他文件处在得所要运行的程序及运行程序所需要的其他文件处在当前目录之下,只有这样,才可以使程序得以正常运当前目录之下,只有这样,才可以使程序得以正常运行。否则可能导致无法读取某些系统文件或数据,从行。否则可能导致无法读取某些系统文件或数据,从而程序无法执行。而程序无法执行。通过通过cdcd指令在命令窗口中可以更改、显示当前工作路指令在命令窗口中可以更改、显示当前工作路径。径。通过路径浏览器(通过路径浏览器(path browserpath browser)也可以进行设置。)也可以进行设置。四、四、M文件的编辑及工作路径设置文件的编辑及工作路径

7、设置五、五、脚本脚本文件文件六、六、脚本脚本文件的创建与执行文件的创建与执行七、七、脚本脚本文件示例程序(文件示例程序(【例【例1 1】 已知已知A=5 8 9;A=5 8 9; B=11,12,13;14,15,16;17,18,19; B=11,12,13;14,15,16;17,18,19; 建立一个命令文件计算建立一个命令文件计算BABAT T的值的值, ,然后将然后将 变量变量A,BA,B的值互换。的值互换。%exchange.m文件文件A=5 8 9;B=11,12,13;14,15,16;17,18,19;compud %计算计算BATC=A;A=B;B=C;AB%compud.

8、m文件文件D=B*AT D = 268 334 400A = 11 12 13 14 15 16 17 18 19B = 5 8 9设置或清除断点:使用快捷键设置或清除断点:使用快捷键F12F12。执行:使用快捷键执行:使用快捷键F5F5。单步执行:使用快捷键单步执行:使用快捷键F10F10。step instep in:当遇见函数时,进入函数内部,使用快捷键:当遇见函数时,进入函数内部,使用快捷键F11F11。step outstep out:执行流程跳出函数,使用快捷键:执行流程跳出函数,使用快捷键Shift+F11Shift+F11。执行到光标所在位置:非常遗憾这项功能没有快捷键,执行到

9、光标所在位置:非常遗憾这项功能没有快捷键,只能使用菜单来完成这样的功能。只能使用菜单来完成这样的功能。 观察变量或表达式的值:将鼠标放在要观察的变量上停观察变量或表达式的值:将鼠标放在要观察的变量上停留片刻,就会显示出变量的值,当矩阵太大时,只显示留片刻,就会显示出变量的值,当矩阵太大时,只显示矩阵的维数。矩阵的维数。退出调试模式:没有设置快捷键,使用菜单或者快捷按退出调试模式:没有设置快捷键,使用菜单或者快捷按钮来完成。钮来完成。八、八、调试器的使用调试器的使用九、九、脚本脚本文件注意事项文件注意事项十、十、函数文件函数文件们设置为全局变量。们设置为全局变量。 (globalglobal)1

10、.1. 具有标准的基本结构。具有标准的基本结构。 function out1,out2,.=filename(in1,in2,.)输入参数输入参数输出参数输出参数可以是标量、数组、矩阵或字符串可以是标量、数组、矩阵或字符串十一、十一、函数文件基本结构函数文件基本结构 注注 1 1、其中函数名的命名规则与变量名相同。当输出、其中函数名的命名规则与变量名相同。当输出 参数多于参数多于1 1个时,则应该用方括号括起来。个时,则应该用方括号括起来。 2 2、函数文件也可以完全没有输入、输出变量,简、函数文件也可以完全没有输入、输出变量,简 单定义为:单定义为: function = filename十

11、二、十二、函数文件示例程序函数文件示例程序 function p=ff(x) %示例程序之一示例程序之一 n=length(x); for i=1:n pp(i)=sqrt(x(i)2+10); end p=pp*2-5; 函数文件函数文件ff.mff.m:函数调用:函数调用:x=1:5y=ff(x)y=ff(1:5)例:有输入输出参数的函数文件建立和调用例:有输入输出参数的函数文件建立和调用y = 1.6332 2.4833 3.7178 5.1980 6.8322结果显示:结果显示:十二、十二、函数文件示例程序函数文件示例程序 function test1 %示例程序之二示例程序之二 a=

12、function test b=1 2;3 4 函数文件函数文件test1.mtest1.m:函数调用:函数调用:在命令窗口键入在命令窗口键入test1test1RunRun运行运行例:无输入输出参数的函数文件建立和调用例:无输入输出参数的函数文件建立和调用十三、十三、函数文件注意事项函数文件注意事项十四、十四、函数文件与脚本文件的区别函数文件与脚本文件的区别十五、变量作用域十五、变量作用域几点说明:几点说明: 函数文件不能直接访问函数文件不能直接访问MATLABMATLAB工作空间中的全局变工作空间中的全局变量,它只能读取通过参数传入的变量和那些定义为全量,它只能读取通过参数传入的变量和那些

13、定义为全局变量的工作空间变量。局变量的工作空间变量。 若没有特别定义,则函数内的变量为局部变量,即若没有特别定义,则函数内的变量为局部变量,即使它与工作空间的变量同名,在该函数返回之后,这使它与工作空间的变量同名,在该函数返回之后,这些变量会自动地被清除掉,在其它函数内和基本工作些变量会自动地被清除掉,在其它函数内和基本工作空间中都不能被调用。空间中都不能被调用。 如果在函数内访问全局变量,必须在函数内用如果在函数内访问全局变量,必须在函数内用globalglobal指令定义,定义的全局变量可以在函数内使用。指令定义,定义的全局变量可以在函数内使用。 使用全局变量前应在命令窗口中定义该变量,但

14、需使用全局变量前应在命令窗口中定义该变量,但需要准确定义其维数和维数大小。要准确定义其维数和维数大小。命令形式:命令形式:global global 全局变量列表全局变量列表十六、全局变量的语句格式十六、全局变量的语句格式在定义和使用全局变量时,应注意:在定义和使用全局变量时,应注意: 全局变量列表中各个变量名不能用逗号分隔。例如:全局变量列表中各个变量名不能用逗号分隔。例如:使用使用global a b c,dglobal a b c,d命令命令MATLABMATLAB编译器会认为编译器会认为a,b,ca,b,c三三个变量为全局变量,而个变量为全局变量,而d d是用户想显示的变量,从而出是用

15、户想显示的变量,从而出现不希望的结果。现不希望的结果。 全局变量在使用前必须在全局变量在使用前必须在MATLABMATLAB工作空间中定义。工作空间中定义。在某一个具体的在某一个具体的MATLABMATLAB函数中如果要使用全局变量必函数中如果要使用全局变量必须在函数前面用须在函数前面用globalglobal命令声明,否则在该函数即使命令声明,否则在该函数即使使用了该变量名,也会被看作局部变量使用。使用了该变量名,也会被看作局部变量使用。 为保证函数的独立性,一般情况下不使用全局变量。为保证函数的独立性,一般情况下不使用全局变量。 在在MATLAB命令窗中运行以下指令:命令窗中运行以下指令:

16、global z1 z2z1=1:-0.1:0.6;z2=0:0.5:2;编写函数文件编写函数文件ff1.mfunction p=ff1(x)global z1 z2n=length(x);for i=1:n pp(i)=sqrt(x(i)2+10+z1(i)+z2(i);end p=pp*2-5; 例:在函数例:在函数ff.m中增加全局变量中增加全局变量十七、十七、全局变量应用示例程序全局变量应用示例程序 x=1:5;Y=ff1(x)程序运行:程序运行:Y = 3.6332 5.2833 7.3178 9.5980 12.0322结果显示:结果显示:十八、十八、 常用的人机交互命令常用的人机

17、交互命令(1 1)单变量输入命令)单变量输入命令 格式:格式:变量名变量名input(input(提示语句提示语句) ) 例如:例如:x=input(x=input(请输入数值:请输入数值:) )例:用一例:用一M M文件接受键盘输入的数据并求其平方值。文件接受键盘输入的数据并求其平方值。%This program is for square%This program is for squaren=input(enter a number)n=input(enter a number)n n* *n n(2 2)键盘控制命令)键盘控制命令 格式:格式:keyboardkeyboard 说明:程

18、序在此处暂停执行,用户可输入说明:程序在此处暂停执行,用户可输入 多行命令,最后输入多行命令,最后输入returnreturn返回返回十八、十八、 常用的人机交互命令常用的人机交互命令(3 3)暂停命令)暂停命令 格式:格式:pause %pause %暂停,直到按任意键暂停,直到按任意键 pause(n) %pause(n) %暂停暂停n n秒秒(4 4)命令显示控制语句)命令显示控制语句 格式:格式:echo on(off)echo on(off) 说明:控制是否在屏幕上显示程序内容。说明:控制是否在屏幕上显示程序内容。(5 5)按键控制命令)按键控制命令 格式:格式:waitforbuttonpresswaitforbuttonpress 说明:暂停,直至用户按鼠标键或键盘键。说明:暂停,直至用户按鼠标键或键盘键。(6) (6) 输入菜单

温馨提示

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

评论

0/150

提交评论