在使用Matlab进行编程时,有时可能需要不少时间。花时间的地方主要有两点:
(1) 一方面在于调试算法的脑力劳动,比如检查算法是否解决了实际问题、程序是否优化等;
(2) 另一方面则在于操作软件的体力劳动,比如检查语法错误、大段注释程序以进行测试等。
如果对一些快捷键比较熟悉,那么能减少多余的操作步骤:
争取把精力尽量集中在算法调试上,而不是软件操作本身,以提高效率。
目 录
01. 屏蔽大段程序(注释):Ctrl+R
02. 自动对齐程序:Ctrl+I(i)
03. 直接跳至某行:Ctrl+G
04. 设置标签:Ctrl+F2
05. 设置断点:F12
06. 运行:F5
07. 自动补全命令:Tab
08. 再现历史命令:上下光标键↑↓
09. 强制中断运行:Ctrl+C
10. 退出:Ctrl+Q
11.单行长注释转多行短注释:Ctrl+J
调试程序时,经常需要屏蔽掉一整段程序,也就是将其标注释符%。
比如下面这段程序共有三段,需要完全屏蔽第二段:
%清除所有变量
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,这样中间都不会被执行,相当于注释掉了,比如在第二段进行如下操作:
if 0
if exist('doggyphoto','dir')~= 7
mkdir([cd,'/doggyphoto'])
end
directory=[cd,'/doggyphoto/'];
end
但缺点是不够直观,注释掉的内容仍然保持代码的颜色。
(2) 第二种是用块注释符号%{和%}的方法:
输入%{后,后面的代码都会变成绿色,在注释结束的地方再加上 %} ,比如在第二段进行如下操作:
%{
if exist('doggyphoto','dir')~= 7
mkdir([cd,'/doggyphoto'])
end
directory=[cd,'/doggyphoto/'];
}%
但缺点是只有在高版本的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/'];
写m文件时,可能有许多if……end,for……end语句。
有时候缩进没有调好,程序不太好看。
选中某段程序内容,按下Ctrl+i,可让matlab自动对齐程序。
这样程序看起来很有层次,也更容易发现程序中的错误。
当程序源代码很长时,可能有几百上千行。
有时错误出现在很后面的地方,需要用鼠标中间的滚轮往下滚很久,才能滚到想要的那一行。
这时,按Ctrl+g,就会跳出一个对话框,输入想要去的那一行的行号,就可以直接跳过去了,如下:
有时候发现程序某行有点问题,但不知道该怎么解决。
然而也不能一直停在这个位置,需要往下继续写。
等写完所有的程序,再回头来解决有问题的这一行。
这样,就需要把这行先标注一下,以免待会回来时,已经忘记是那一行了。
用Ctrl+F2,可标注这一行,被标注的这一行行号后面有个蓝色的圆方框,比如:
再按一次Ctrl+F2,就可以解除已经标注的方框。
另外,要寻找下一个被标注的位置时,不需要手动滚轮和目测寻找,只需要按F2即可自动跳到下一个被标注的位置,按Shift+F2是自动跳到上一个被标注的位置。
测试程序时,有时需要设置断点,程序会在断点处停止运行。设置断点的方法有两种:
(1) 点击在要设置断点的行左侧的-;
(2) 可按F12设置断点。
可以看到某行被设置为断点后,该行行号后面的-变成了圆圈:
条件断点在debug菜单下的set/modify conditional breakpoint进行设置。
如果需要解除断点,点击已设置断点处的语句,按F12可取消。
F5可保存并直接运行程序。
这样就不用在主窗口再重新敲一遍命令了。
另外,设置断点后按F5运行程序,会在断点处停止运行,按F10可以单步运行调试。
当在命令窗口输入命令时,有时命令的名称可能记得不太清楚。
这时,可以输入命令开头的几个字母,然后按Tab键。
当只有一个以这些字母开头的命令时,将自动补全命令名。
如果有多个以这些字母开头的命令时,将会显示一个命令名列表,方便从中选择,比如:
在命令窗口中,上下光标键可以调用Matlab最近使用过的历史命令,便于快速重新执行。
如果输入命令的前几个字母,再使用光标键,则只会选择以这些字母开始的命令。
上下箭头寻找此前和此后输入的命令,每次一条。
如果程序不小心进入了死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c来强制中断。
当然,有些时候Matlab可能响应很慢,这时候就只能用任务管理器结束掉它。
Ctrl+c只是强行退出运行的程序,并不是关掉Matlab。
如果要快速退出Matlab,则需要按Ctrl+q
在写了一条很长的注释的时候,把光标放在注释那行,按ctrl+j, 可以很方便整齐的wrap成多行。对于习惯写大量注释的人会很有用。