Matlab调试技巧(实战篇)(一)
Matlab调试技巧(实战篇)
1、合理利用工作区,观察关键变量的变化(可以与步进策略结合)
2、打印可能有问题的变量
3、合理利用步进策略,跟踪程序运行过程,发现和预想不一致的地方,定位问题点,进一步分析可能的问题
4、结合Fig运行的状态直观分析问题。
例如我的程序里是讲机器人智能体运动的过程,重要的是运动的模式是否正确,当我发现有机器人的运动不对的时候,我会根据其位置(坐标),对应找到此时工作区里的robot的mat数据,发现此时机器人任务负载为空,是有问题的,从而要回头去找给机器人赋予任务的程序的问题。(注意下面两张图的标注区域代表的机器人不一样,是要表达这个意思)
5、直接根据算法,去分析写的代码逻辑是否正确。
这也是最基本的分析过程,可以排除大部分基础逻辑问题。
6、代码写一个模块就要测试下,看看是否对的。
不要所有代码写完再来测试,这样很多隐藏的问题难以发现。
7、熟练掌握程序基本逻辑是能够顺利调参的前提,这里需要很多的经验。
(1)举几个不完整的例子,如下图,在判断条件里写的是robot(id),是以机器人之前的状态充当判断条件,修改时将信息存在newrobot(id)中,这样确保了一个群体里的任意个体更新信息的过程是并行的(程序外部逻辑是有遍历所有机器人的循环的)。
(2)再举个例子,请注意,涉及到除法的一定要仔细考量分母为零的情况,分类讨论。
(3)再举个例子,一定要注意条件的完备性,少考虑一个条件,整个程序的运行效果会与设想的差别甚大。另外,break的位置很重要,这是编程的基本逻辑,我之前将break放在了if判断的外面,也就是for循环的第一层,导致只运行一遍循环就跳出了,只怪编程水平太菜,一些基本的逻辑问题还用不好。
8、对程序的熟悉程度决定了调试的速度和效率
在出现问题时,对程序的熟悉可以帮助我们尽快的追根溯源,从而找到症结所在。
未完待续。。。。欢迎大家提问,我会尽力回答,可以私信或者本帖留言。
Matlab调试技巧(实战篇)(一)相关推荐
- 分享平面设计中的视觉思维(技巧实战篇)
好的平面品牌设计一定会有出色的视觉效果.这里分享从视觉思维和视觉传达设计的内涵.概念等方面入手,指出视觉传达设计是视觉思维的过程.就视觉传达设计中视觉思维创新展开论述,从视觉中心.比例与尺度.对比与统 ...
- 【C语言】VS编辑器实用的调试技巧
先聊聊我为什么要出这篇关于VS的调试技巧这篇文章,是因为我在学习数据结构和C++等知识时,常常会写出bug,但自己由于对于VS2019的调试不是很熟练,也有点"害怕"调试,担心浪费 ...
- QCC304x系列开发教程(实战篇) 之10.2 QCC3040之教你调试入仓和出仓情景下的程序运行
查看全部教程开发请点击:高通蓝牙耳机QCC304x开发详解汇总(持续更新中) 查看本文全部文章请点击:QCC304x系列开发教程(实战篇) 之10.2 QCC3040之教你调试入仓和出仓情景下的程序运 ...
- Vue.js 父子组件通信的十种方式;告诉世界前端也能做 AI;你可能不知道的14个JavaScript调试技巧...
记得点击文章末尾的"阅读原文"查看哟~ 下面先一起看下本周的摘要吧~ 想了解老用户如何参与阿里云双十一1折拼团特惠主机的,可以看第二条推送,文中提供了两种方法~,一起看看本周有哪些 ...
- [转] Xcode 高级调试技巧
在苹果的官方文档中列出了我们在调试中能用到的一些命令,我们在这重点讲一些常用的命令 调试本地文件方法(Mac OS X):(lldb) target create "/Users/piaoy ...
- Xcode高级调试技巧(1)
在苹果的官方文档中列出了我们在调试中能用到的一些命令,我们在这重点讲一些常用的命令 调试本地文件方法(Mac OS X):(lldb) target create "/Users/piaoy ...
- VsCode 各场景高级调试技巧!
这是「进击的Coder」的第 753 篇技术分享 作者:愣锤 来源:https://juejin.cn/post/7071146744339234846 " 阅读本文大概需要 23 分钟. ...
- 视频教程-反勒索编程实战篇-病毒木马
反勒索编程实战篇 05年在安天从事病毒分析,06年设计反木马引擎,07年进入毒霸参与主动防御的安全策略制订及相应驱动代码编写.09年在福州网龙负责反木马反外挂.15年在卫士通负责终端安全应急相应,恶意 ...
- 跟安全技术大师学习黑客攻防技术 ——《黑客攻防技术宝典:web实战篇》
跟安全技术大师学习黑客攻防技术 --<黑客攻防技术宝典: web 实战篇> 随着网络技术的快速发展以及网络带宽的不断扩张, Web 应用程序几乎无处不在,渗透到社会的经济.文化.娱乐等各个 ...
最新文章
- mysql数据库常见进阶使用
- jQuery Mobile开发1-UI components
- 毕业一年左右的前端妹子面经总结
- cpout引脚是干什么的_电源IC欠压保护(Brown-out)功能介绍
- 阿里巴巴的独立环境是如何实现的
- java日期处理简单封装
- iOS开发中的错误整理,Changing the delegate of a tab bar managed by a tab bar controller is not allowed...
- C++初始化参数列表对成员函数初始化
- html 左侧居中对齐,HTML的居中对齐
- typedef struct LNode *p和typedef struct LNode笔记
- 优动漫PAINT动画创作功能介绍
- 计算机维护与维修毕业论文,计算机维修与维护毕业论文.doc
- 客户端无法向springcloud注册中心注册服务,提示连接超时
- CJT长江连接器公司的A2541系列线对板连接器PCB封装库
- Angular Router的组件路由介绍
- 计算机课外活动兴趣小组内容,学校课外兴趣小组活动总结
- [Microsoft SQL Server Management Studio]SSMS查询年龄最大学生的姓名和年龄问题及查询最高的学生的学号问题分析及解决
- vue修改首页为指定文件
- 微型计算机的 I3 I5是,i3与i5有什么区别
- 使用预装Win10的戴尔电脑最新恢复出厂设置方法