如何调试Matlab代码
世界上到处都有错误发生。在编程中,这些错误可能是由于写了软件不理解的代码或打错字而造成的。
当你尝试运行一个有错误的程序时,它可能会失败或给出意想不到的结果。
软件可能无法运行,因为它不理解代码。另外,由于对代码的误解,它也可能给出意想不到的结果。这些错误也被称为bug。
分析代码以识别和消除错误的过程被称为调试。
调试可能是紧张而累人的。此外,Matlab的错误声明可能很难理解。
目标
本文将讨论如何发现和纠正Matlab代码中的错误。我们还将研究如何使用Matlab的内置调试器来调试代码。
前提条件
要继续学习,你需要具备以下条件。
- 安装了[Matlab]。
- 对[Matlab]有一个基本的了解。
Matlab中的错误类型
Matlab能够检测到错误。由于错误的存在,程序停止运行或给出错误的结果。
在使用Matlab时,可能出现的三种主要错误类型是。
- 语法错误
- 逻辑错误
- 运行时错误
1.语法错误
语法是定义程序中各种符号的含义的规则。它告诉计算机如何阅读和翻译多种代码。每种编程语言都有其语法。
当程序员在编码时使用了错误的语法或打错了字,就会发生语法错误。一个例子是输入plog ,而不是plot 。
幸运的是,Matlab可以显示这些错误。它可以指出开发者的错误的具体位置或位置。
让我们来看一个错误的例子,看看Matlab是如何提高标志来显示它的。
fprintf(today is my birthday)
当我们运行这段代码时,执行会停止,Matlab会升起一个标志来显示有一个错误。
输出。

在上面的例子中,程序员可能忘记在代码中添加一些符号。因此,代码的执行被停止,Matlab定位到了错误的位置。
语法错误也可能由于变量拼写错误而发生。
例如,你可以定义一个变量,但在使用它时却拼错了,如下图所示。
temp = 15;
newtemp = tem + 3
当我们执行上面的代码时,会得到以下结果。

一般来说,在Matlab中造成语法错误的原因有很多。随着你继续学习Matlab,你会学到各种语法错误以及如何发现和纠正它们。
2.逻辑错误
当程序的逻辑出现问题时就会发生逻辑错误。尽管逻辑错误不会导致程序崩溃,但它们会导致错误或意外的结果。因此,这些错误可能很难被发现。
此外,由于代码运行并提供输出,没有错误标志被提出来帮助识别错误。这可能会让人感到沮丧,尤其是在你不知道如何调试的时候。
例子。
%print odd numbers from 1 to 10
for i = 1:10
if rem(i,2) == 0
disp(i)
end
end
在上面的例子中,程序应该显示奇数。然而,结果却与我们的预期不同。
输出。

3.运行时错误
运行时错误发生在程序执行过程中。它们可能是由软件或硬件问题引起的。
这些错误应该被修复,因为它们可能导致关键问题。例如,运行时错误可能会导致整个系统失效。
运行时错误很难检测,因为它涉及到对你的软件的每一个可能的输出进行预测。
预测是测试你的程序的每个可能的行为的过程。它包括评估所有可能的变量、输入和决策路径的组合。
调试Matlab代码
Matlab有一些很好的调试工具,可以帮助你找到代码中的错误。
例如,断点允许开发者在一个特定的位置暂停代码的执行。如果你想让Matlab在执行某一行代码前暂停,你将在那里放置一个断点。
点击Matlab脚本或函数中数字行旁边的破折号来创建一个断点,如下图所示。

如果我们修改了正在调试的脚本或函数,断点就会变成灰色,直到更改被保存。灰色表示断点没有被激活。
如果我们运行上图中的代码,我们会得到。

字母K ,表明有调试器在控制程序,而且已经停止。断点旁边的绿色箭头表示,由于有断点,所以执行停止。这意味着下一行没有被执行。

在Matlab窗口的顶部,我们有各种调试组件,你可以用它们来调试你的代码。
要访问所有这些组件,请点击上图中所示断点的dropdown 按钮。
你会看到以下选项。

让我们来讨论每个选项的功能。clear all,set/clear,enable/disable, 和set 条件的目的在Matlab窗口中解释。

Step- 这是用来执行当前行的。Step in- 它用于获得一个用户定义的函数。它调用该函数,但在该函数的第一行停止。Step out- 如果最初使用 选项调用了一个函数,它被用来移动到该函数的下一行。step inContinue- 除非遇到另一个断点,否则它会继续执行程序直至完成。Quit debugging- 它退出调试模式,不完成当前函数的执行。
调试过程示例
让我们对这个函数进行调试。
function x = rand_int(n,m)
x = randi(n,m);
fprintf('The last element is %d\n', x(n,m))
当我们运行这个Matlab函数时,出现了以下错误。

从上面的错误信息中,我们看到Matlab要求更多的参数。
让我们在第三行放置一个断点并重新运行程序。
我们得到下面的结果。

我们应该在命令窗口中的k 前面加入我们函数的参数。例如,我们将在k 前面加上下面的代码。
rand_int(3,2)
做完这个修正后,点击step ,看看它的效果。

如果我们看一下Matlab的工作区,我们会看到一些有趣的东西。

在工作区中,我们的变量已经被分配了一个值,但是我们得到的矩阵是一个2 x 2 。这并不是我们所期望的。
我们可以在命令窗口中输入whos ,以查看关于我们变量的更多细节。

记住K>> ,就像一个普通的命令窗口一样。开发者可以做任何事情,包括绘图和为变量赋值。唯一不同的是,该窗口属于活动函数,在我们的例子中,是rand_int 。
我们使用size 函数来检查存储在变量x 中的数组的尺寸,这表明它是一个2 x 2 矩阵。

在这一点上,你可以找到错误的源头并进行适当的修改。一旦这样做了,我们就可以用clear all ,然后用quit debugging ,清除所有的断点。
总结
调试在编程中是必不可少的。它被用来避免由于程序中的各种错误而可能出现的问题。
因此,所有的开发人员都必须具备调试技能。此外,他们应该了解一个程序是如何工作的,以及预期的输出。这使调试变得容易,特别是在检查逻辑错误时。