1、在开发函数 M 文件过程中,不可避免地出现错误,即故障。MATLAB 提供了很多函数和方法,帮助调试函数。 在 MATLAB 表达式中,有两类错误:语法错误和运行错误。当 MATLAB 计算一个表达式的值或一个函数被编译到内存时会发现语法错误。一旦发现语法错误,MATLAB 立即标志这些错误,并提供有关所遇到的错误类型,以及发生错误处 M文件的行数。给定这些反馈信息,就很容易纠正这些错误。而另一方面,即使 MATLAB 标志了运行错误,但找出错误一般比较困难。当发现运行错误时,MATLAB 把控制权返回给命令窗口和 MATLAB 的工作空间。失去了对发生错误的函数空间的访问权,因此,用户不能询
2、问函数工作空间中的内容排除问题。根据作者的经验,当一些操作结果导致空矩阵或 NaNs 时,最容易发生运行错误。所有有关 NaNs 的操作都返回 NaNs 值。因此,如果有可能出现 NaNs 结果,则当出现 NaNs 时,最好运用逻辑函数 isnan 来执行一些缺省操作。因为空矩阵为零维,所以对空矩阵寻址常常导致错误。函数 find 表示了可产生空矩阵结果的一般情况。如果函数 find 的空矩阵输出用于索引其它数组,所返回的值也将是空的。这样,空矩阵具有传播性质。例如:x=pi*(1 : 4) % example datai=find(x20) % use find functiony=2*x(
3、i) % propagate the empty matrix很清楚,当希望 y 具有有限维数和值时,可能发生运行错误。当执行一个操作或使用可返回空结果的函数时,逻辑函数 isempty 有利于为空矩阵定义一个缺省值,这样避免运行错误。有几种调试函数 M 文件的方法。对于简单的问题,可直接使用下列的方法组合:1、去掉文件中所选择的行的分号,以便中间结果显示在命令窗口中。2、在文件中加入显示感兴趣的变量的语句3、把 keyboard 命令放在文件中所选择的地方,给键盘暂时控制权。这样,可以查询函数空间并按需要改变其值。4、在 M 文件开始,在 function 语句前加上%,将函数 M 文件改变
4、为脚本 M文件。当 MATLAB 执行该脚本 M 文件时,该空间就是 MATLAB 工作空间。这样,当发生错误时可以询问。当 M 文件大,递归调用或者多次嵌套(即调用其它 M 文件函数,被调用 M 文件函数又调用其它 M 文件函数,等等)时,用 MATLAB 的调试函数会更方便。与上述所列方法相反,这些调试函数不要求将有问题的 M 文件进行编辑。表 16.1所给出的这些函数类似于其它高级编程语言中所提供的函数。有关进一步的信息,以及它们的使用实例,参阅MATLAB 用户指南。表 16.1MATLAB 调试函数dbclear:取消断点dbcont:在断点后恢复运行dbdown:工作空间下移dbquit:退出调试模式dbstack:列出谁调用谁dbstatus:列出所用的断点dbstep:执行一行或多行dbstop:设置断点