调试大型matlab数值计算程序的经,
2016-09-28 17:12
106 查看
经过半个月的折腾,终于把论文里面的数值计算程序调好了!个人认为,调bug是所有写程序的人必须掌握的方法,因此这里对我调bug的经验进行一下总结:
找bug主要靠 比较--回溯法,比较正确结果的每一个中间结果 和 错误程序的中间结果,第一次出现差异的地方就是出错的位置。问题关键在于,如何构造一个正确案列。
1. 找一个简单的问题,这个问题最好是可以解析求解的,其中每一个中间结果都是可以手算的。如果计算过程实在复杂,无法手算,那么。。找一个问题的简单情形,写一个简单的非通用的程序,把所有的中间结果算出来。然后,用复杂程序计算简单情形,将中间结果与之前算出来的比较,找到问题的根源!
2. 修改案例的参数,比如让某些参数置零,让案例产生的中间结果可以分析出部分特征,然后用程序的结果与之对比,分析原因;
3. 和之前写的可正确运行的程序逐行对比
关键是要有耐心!!!态度上要重视,我用了整整两天的时间集中找bug
找bug主要靠 比较--回溯法,比较正确结果的每一个中间结果 和 错误程序的中间结果,第一次出现差异的地方就是出错的位置。问题关键在于,如何构造一个正确案列。
1. 找一个简单的问题,这个问题最好是可以解析求解的,其中每一个中间结果都是可以手算的。如果计算过程实在复杂,无法手算,那么。。找一个问题的简单情形,写一个简单的非通用的程序,把所有的中间结果算出来。然后,用复杂程序计算简单情形,将中间结果与之前算出来的比较,找到问题的根源!
2. 修改案例的参数,比如让某些参数置零,让案例产生的中间结果可以分析出部分特征,然后用程序的结果与之对比,分析原因;
3. 和之前写的可正确运行的程序逐行对比
关键是要有耐心!!!态度上要重视,我用了整整两天的时间集中找bug
相关文章推荐
- Matlab之化简多项式
- 记录一些Matlab用法
- Matlab基础之稀疏矩阵
- matlab下mex 调用opencv库
- matlab之plot函数绘图方法
- MATLAB实现最优低通滤波器的函数
- Matlab中画图的说明
- matlab SVM有监督学习
- 读取同一个文件夹的统一格式的文件
- 一个简单的虹膜定位程序
- Maximum Likelihood,ML
- K-means cluster
- 机器学习技法作业三题目19-20
- 机器学习技法作业三题目16-18
- MATLAB find函数的运用
- matlab微分方程dsolve使用
- matlab-自控原理 给出线性定常系统的A和C矩阵,用秩判据判断系统的能观性
- matlab-自控原理 给出线性定常系统的A和B矩阵,用秩判据判断系统的能控性
- matlab-线性代数 cat 两个矩阵的水平、竖直拼接
- matlab-基础 if-else-end示例