- 1、本文档共174页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五讲MATLAB程序设计讲述
3.2 MatLab程序调试方法 直接调试法 利用调试器 直接调试法 由于MatLab语言可读性强,对于较简单的程序直接调试法比较有效。直接调试一般包括以下几个方面: A. 检查所调用的函数或要载入的数据文件是否在当前目录或搜索路径上。 B. 将重点怀疑的语句行、指令行后的“;”去掉,使计算结果能显示在命令窗口。 C. 在适当的位置加入显示某些关键变量值的语句(如用disp) D. 利用echo on指令,使运行时,在屏幕上逐行显示文件内容。echo on能显示M脚本文件;echo FunName on能显示名为FunName的M函数文件。 E. 在程序适当位置加入keyboard指令。Matlab运行到这一指令时,会暂停执行,并在MatLab指令窗口中出现K提示符。此时可输入指令可查看各种变量的值,也可修改变量的值。输入回车后结束查看,原文件继续运行。 % MATLAB script for Illustrative Problem echo on %屏幕上逐行显示每一行内容 SNRindB1=0:1:12; SNRindB2=0:0.1:12; for i=1:length(SNRindB1), % simulated error rate smld_err_prb(i)=smldPe54(SNRindB1(i)); echo off ; %结束显示 end; 可见zhidianyundong2.m 利用Matlab调试器 MATLAB的M文件编辑器除了能编辑、修改文件外,还能对程序进行调试。通过调试菜单,可以查看和修改函数工作空间中的变量,从而准确地找到运行错误。通过调试菜单设置断点可以使程序运行到某一行暂停运行,这时可以查看和修改各个工作空间中的变量。通过调试菜单可以一行一行地运行程序。下面看调试菜单Debug。 MATLAB程序设计方法实例 摩托车问题与数学模型 ? 红、绿两队从相距100公里的地点同时出发相向行军,红队速度为10(公里/小时)绿队速度为8(公里/小时) 开始时,通讯员骑摩托从红队出发为行进中的两队 传递消息。摩托车的速度为60(公里/小时)往返于两队 之间. 每遇一队,立即折回驶向另一队.当两队距离小 于0.2公里时,摩托车停止。计算通讯员驾驶摩托车跑 了多少趟(从一队驶向另一队为一趟)。 摩托车问题 将红队、绿队和摩托车假设为A、B、C三个点. A点初始位置A=0, 速度va=10 (运动向右); B点初始位置B=100, 速度vb=8(运动向左); C点初始位置C=0, 速度vc=60 (f=±1表示运动方向) 当C向右运动时, C、B相遇时间: tk= (B – A)/(8+60) 当C向左运动时,A、C相遇时间: tk= (B – A)/(60+10) 利用相遇时间tk,及时计算A, B的最新位置 当 (B– A)0.2 时程序结束。 相遇问题的数学模型 while (B-A)0.2 if f==1 tk=(B-A)/(vb+vc); else tk=(B-A)/(vc+va); end A=A+va*tk; B=B-vb*tk; plot(A,0,‘r.,B,0,g.) pause(1) f=-f; k=k+1; end k A=0; B=100; va=10;vb=8;vc=60; f=1; %表示向右运动 k=0; %存放趟数 plot(A,0,ro,B,0,go) hold on Matlab绘图时几组常见的RGB的值: [0 0 1]蓝色b [0 1 0]绿色g [1 0 0]红色r [0 1 1]青色c [1 0 1]品红色m [1 1 0]黄色 y [0 0 0]黑色k [1 1 1]白色w [0.5 0.5 0.5]灰色 [0.67 0 1]紫色 [1 0.5 0]橙色 [1 0.62 0.40]铜色 [0.49 1 0.83]宝石蓝 RGB叫三元色,任何一种颜色均可由三个数表示 用字母或数字表示颜色 例. 函数的递归调用: 阶乘计算 function fac=fact(n) if n==1|n==0; fac=1; return %啥意思? end fac=n*fact(n-1); fact(21) ans = 5.109094217
文档评论(0)