时隔多日,在经历了令人头秃的一波考试之后,我百汉三又回来了!!
今天给大家带来新手入门级别的MATLAB调试技巧,由浅即深,配合使用效果更佳。
一、碰到软件自动报错怎么办?
这是在进行调试中,碰到最好进行修改的一种情况(忽略掉代码很多很多已经很懵逼的情况),可以根据报错提示在相应的地方进行修改。
接下来讲一下几种常见的报错:
1、未定义变量或函数
比如说,我定义了变量b=1,然后让y=a,a是未定义的变量,会出现如下报错,
很明显可以看出,MATLAB告诉你在第三行出错了,出错的原因是未定义函数或变量,(用英文版的朋友碰到报错可以自行搜索一下它的中文意思),修改方法就是再补充定义你报错的变量或者使用已定义的变量,比如这样:
2、矩阵的维数必须一致
先简单讲讲什么是矩阵的维数,m×n矩阵表示可以储存m行n列的数据,类似于一个大棋盘,给矩阵填数据,就是在棋盘里下棋。
矩阵的运算规则里,矩阵乘法在MATLAB中用A=B*C表示,矩阵点乘用A=B.*C表示,矩阵乘法运行要求B的列数和C的行数相同,矩阵点乘要求B、C两矩阵的行数、列数分别相同。
有点点绕口,没关系,下面看两个例子!
(1)矩阵乘法
分析一下,B矩阵3列,C矩阵2行,不满足规则所以报错了。
(2)矩阵点乘
用同样的数据,改为A=B.*C进行矩阵点乘运算,得到结果:
分析一下,B矩阵2行=C矩阵2行,B矩阵3列=C矩阵3列,符合条件不报错。
3、下标索引必须是正整数类型或者逻辑类型
这个!!!问题!!!真的超级容易碰到了!!!!!
先解释一下这一串文字是什么意思,就是把数据填到了矩阵外,超出了索引范围。
简单来说就是在你面前有一个棋盘,要你把棋子摆在棋盘上,但是你眼神不好使不小心把棋子放在棋盘外了,导致你下了个废棋。
出现这种情况一般是循环里出了问题,根据报错的行数仔细看看哪个循环中的变量超出了索引范围,并进行相应的修改。
温馨提示:MATLAB的矩阵索引从1开始,而C语言的矩阵索引从0开始,不要搞混了哦!
二、如果没报错但是结果不对怎么办?
只能很哀伤的告诉你,认真调试吧,应用下面几种办法希望能够救你脱离苦海
1、断点调试法
断点,顾名思义,就是让程序碰到这个点停下来,不运行了。
设置断点的方案也很简单,先点开程序界面,
我们可以看到每行后面都有一个小横线,将鼠标放在横线下点击一下,就会出现一个红色的点
如上图,该程序运行完第13行之后停止,通过断点调试法,可以测试出哪一部分和预期想要的效果不同,从而进行相应的修改。
2、观察变量法
这个方法超级实用!!!请大家不要忽略它!
有的时候通过断点也观察不到现象,这个时候就要对各个变量进行观察,具体操作如下:
点击“打开变量”,会出现工作区,运行程序后工作区的内容会进行更新,比如
图中有5个变量,L为常数15,其他分别为矩阵,可以从图中看出矩阵的行列数(比如n为1行11列的矩阵)以及类型(比如double型),我们可以通过变量的情况判断是否符合预期,然后根据错误的变量去针对性地寻找错误;
如果出现计算结果上的错误,双击变量前的黄色田字可以看到各个变量的具体数值,可以对数值进行观察,看运算是从哪一步开始出现错误的。
本期调试技巧就到这里了!觉得有用的话请点赞转发嗷!求关注!
下期将带来MATLAB入门算法,带你从MATLAB“0基础”开始学起!