TA的每日心情 | 愤怒 2020-1-7 00:01 |
---|
签到天数: 88 天 连续签到: 1 天 [LV.6]常住居民II
实习版主
- 积分
- 1579
- 注册时间
- 2017-3-9
- 最后登录
- 2020-1-7
|
本帖最后由 小明同学 于 2017-3-11 14:05 编辑
在使用Matlab进行编程时,有时可能需要不少时间。花时间的地方主要有两点:
(1) 一方面在于调试算法的脑力劳动,比如检查算法是否解决了实际问题、程序是否优化等;
(2) 另一方面则在于操作软件的体力劳动,比如检查语法错误、大段注释程序以进行测试等。
如果对一些快捷键比较熟悉,那么能减少多余的操作步骤:争取把精力尽量集中在算法调试上,而不是软件操作本身,以提高效率。
下面3M君将自己常用的一些快捷键列出来,供大家参考,遗漏的地方欢迎留言补上。
1. 屏蔽大段程序:Ctrl+r
调试程序时,经常需要屏蔽掉一整段程序,也就是将其标注释符%。
比如下面这段程序共有三段,需要完全屏蔽第二段:
- %清除所有变量
- clear
- clc
-
- % 建立图片存储文件夹
- % if exist('doggyphoto','dir')~= 7
- % mkdir([cd,'/doggyphoto'])
- % end
- % directory=[cd,'/doggyphoto/'];
-
- %设置一个界面
- hf = figure('Units', 'Normalized', 'Menubar', 'None','NumberTitle', 'off', 'Name', '控制');
- ha = axes('Parent', hf, 'Units', 'Normalized', 'Position', [0.125 0.2 0.75 0.75]);
- axis off
- axis equal
复制代码
常用的方法有两种:
(1) 第一种是用if 0的方法:
在段首加 if 0,段尾加 end,这样中间都不会被执行,相当于注释掉了,比如在第二段进行如下操作:
- %清除所有变量
- clear
- clc
-
- % 建立图片存储文件夹
- % if exist('doggyphoto','dir')~= 7
- % mkdir([cd,'/doggyphoto'])
- % end
- % directory=[cd,'/doggyphoto/'];
-
- %设置一个界面
- hf = figure('Units', 'Normalized', 'Menubar', 'None','NumberTitle', 'off', 'Name', '控制');
- ha = axes('Parent', hf, 'Units', 'Normalized', 'Position', [0.125 0.2 0.75 0.75]);
- axis off
- axis equal
复制代码
但缺点是不够直观,注释掉的内容仍然保持代码的颜色。
(2) 第二种是用块注释符号%{和%}的方法:
输入%{后,后面的代码都会变成绿色,在注释结束的地方再加上 %} ,比如在第二段进行如下操作:
- if 0
- if exist('doggyphoto','dir')~= 7
- mkdir([cd,'/doggyphoto'])
- end
- directory=[cd,'/doggyphoto/'];
- end
复制代码
但缺点是只有在高版本的Matlab里面才能用。
最合适和最方便的方法还是用Ctrl+r快捷键的方法:
用鼠标选中需要注释的行,按Ctrl+r,选中的第二段就变为注释了:
- % 建立图片存储文件夹
- % if exist('doggyphoto','dir')~= 7
- % mkdir([cd,'/doggyphoto'])
- % end
- % directory=[cd,'/doggyphoto/'];
复制代码
取消注释也是类似的,用鼠标选中已经注释的行,按Ctrl+t,选中的这些行就被解除注释了:
- %建立图片存储文件夹
- if exist('doggyphoto','dir')~= 7
- mkdir([cd,'/doggyphoto'])
- end
- directory=[cd,'/doggyphoto/'];
复制代码
2. 自动对齐程序:Ctrl+i
写m文件时,可能有许多if……end,for……end语句。
有时候缩进没有调好,程序不太好看,比如下面这个:
- %建立图片存储文件夹
- if 0
- if exist('doggyphoto','dir')~= 7
- mkdir([cd,'/doggyphoto'])
- end
- directory=[cd,'/doggyphoto/'];
- end
复制代码
当end很多的时候,很难看清楚end对应的是哪个命令。
选中某段程序内容,按下Ctrl+i,可 让matlab自动对齐程序:
- %建立图片存储文件夹
- if 0
- if exist('doggyphoto','dir')~= 7
- mkdir([cd,'/doggyphoto'])
- end
- directory=[cd,'/doggyphoto/'];
- end
复制代码
这样程序看起来很有层次,也更容易发现程序中的错误。
3. 直接跳至某行:Ctrl+g
当程序源代码很长时,可能有几百上千行。
有时错误出现在很后面的地方,需要用鼠标中间的滚轮往下滚很久,才能滚到想要的那一行。
这时,按Ctrl+g,就会跳出一个对话框,输入想要去的那一行的行号,就可以直接跳过去了,如下:
4. 设置标签:Ctrl+F2
有时候发现程序某行有点问题,但不知道该怎么解决。
然而也不能一直停在这个位置,需要往下继续写。
等写完所有的程序,再回头来解决有问题的这一行。
这样,就需要把这行先标注一下,以免待会回来时,已经忘记是那一行了。
用Ctrl+F2,可标注这一行,被标注的这一行行号后面有个蓝色的圆方框,比如:
再按一次Ctrl+F2,就可以解除已经标注的方框。
另外,要寻找下一个被标注的位置时,不需要手动滚轮和目测寻找,只需要按F2即可自动跳到下一个被标注的位置,按Shift+F2是自动跳到上一个被标注的位置。
5. 设置断点:F12
测试程序时,有时需要设置断点,程序会在断点处停止运行。设置断点的方法有两种:
(1) 点击在要设置断点的行左侧的- ;
(2) 可按F12 设置断点。
可以看到某行被设置为断点后,该行行号后面的- 变成了圆圈:
条件断点在debug 菜单下的set/modify conditional breakpoint 进行设置。
如果需要解除断点,点击已设置断点处的语句,按F12可取消。
6. 运行:F5
F5 可保存并直接运行程序。
这样就不用在主窗口再重新敲一遍命令了。
另外,设置断点后按F5 运行程序,会在断点处停止运行,按F10 可以单步运行调试。
7. 自动补全命令:Tab
当在命令窗口输入命令时,有时命令的名称可能记得不太清楚。
这时,可以输入命令开头的几个字母,然后按Tab 键。
当只有一个以这些字母开头的命令时,将自动补全命令名。
如果有多个以这些字母开头的命令时,将会显示一个命令名列表,方便从中选择,比如:
8. 再现历史命令:上下光标键↑↓
在命令窗口中,上下光标键可以调用Matlab 最近使用过的历史命令,便于快速重新执行。
如果输入命令的前几个字母,再使用光标键,则只会选择以这些字母开始的命令。
上下箭头寻找此前和此后输入的命令,每次一条。
9. 强制中断运行:Ctrl+c
如果程序不小心进入了死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c 来强制中断。
当然,有些时候Matlab 可能响应很慢,这时候就只能用任务管理器结束掉它。
10. 退出:Ctrl+q
Ctrl+c 只是强行退出运行的程序,并不是关掉Matlab 。
如果要快速退出Matlab ,则需要按Ctrl+q 。
转载自:3M君
|
温馨提示:
1、在论坛里发表的资源类教程及软件属于作者个人行为,如有侵权,请及时联系我们处理。
2、转载本论坛的原创内容,请注明“转载自:三角板论坛科研论文作图网”
3、论坛内的帖子内容,仅代表作者个人观点,如出现涉及敏感话题内容,我站愿积极配合删除帖子,并对作者进行法律追究。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
|