1. 程序内计时
趁着跑程序的空当,记录下Matlab计时函数的使用。
- tic, toc
当你需要计算一组Matlab操作的运行时间时,可以使用tic和toc函数。tic函数启动一个秒表,表示计时开始;toc则停止这个秒表,表示计时结束,并计算出所经历的时间(单位为秒)。比如,下面的代码连续两次计算plot(rand(50,5))这条指令的执行时间:
> tic;plot(rand(50,5));toc
Elapsed time is 0.202291 seconds.
> tic;plot(rand(50,5));toc
Elapsed time is 0.062176 seconds.
你会发现这两条同样的plot命令在计算时间上的差别。第二条plot命令要比第一条执行得快,这是因为Matlab已经在执行第一条plot命令时生成了Figure窗口并且已经将所需要的函数编译到了内存,这样第二条指令就省去了创建Figure窗口以及函数搜索和编译的时间。
- cputime, etime
除了tic和toc外,Matlab还提供了两个函数cputime和etime,用来计算一次运算所占用的时间。其中,函数cputime返回以秒为单位的、自当前Matlab程序段启动之后到调用该函数所占用的CPU时间;函数etime计算两个以6元素行向量格式(例如函数clock与datevec的返回值)表示的时间向量(年 月 日 时 分 秒)之间以秒为单位的时间间隔。实际上,函数tic和toc内部也在利用clock和etime进行计时。下面的这些代码演示了cputime和etime的用法,其中histo_equalization是我自定义的一个关于直方图均衡的M脚本文件:
>> t0 = cputime; histo_equalization; cputime-t0
ans =
1.4375
>> t1 = clock; histo_equalization; etime(clock,t1)
ans =
1.5000
%由此可看出cpu占用时间与程序占用时间之间的差别。
参考《精通Matlab7》,参考Blog文章链接。
2. 调试程序
常用调试方法。
- 设置或清除断点:使用快捷键F12,或左键该行的数字轴位置增加一个断点。
- 执行:使用快捷键F5。
- 单步执行:使用快捷键F10。
- 选择执行:F9,或者右键 Evaluate Selection。
- step in:当遇见函数时,进入函数内部,使用快捷键F11。
- step out:执行流程跳出函数,使用快捷键Shift+F11。
- 执行到光标所在位置:非常遗憾这项功能没有快捷键,只能使用菜单来完成这样的功能。
- 观察变量或表达式的值:将鼠标放在要观察的变量上停留片刻,就会显示出变量的值,当矩阵太大时,只显示矩阵的维数。
- 退出调试模式:没有设置快捷键,使用菜单或者快捷按钮来完成。
3. 统计计算时间
Matlab提供了cputime和etime用来计算一次运算所占cpu时间,具体见help
>>t0=cputime;
myoperation;
cputime-t0
> ans=0.1400
>>t1=clock;
myoperation;
etime(clock,t1)
> ans=11.2800
注:myoperation为用户自定义脚本文件
4. 日期、时间等
** date ,now,clock**
- date:按照日期字符串格式返回当前系统日期
- now:按照连续的日期数值格式返回当前系统时间
- clock:按照日期向量格式返回当前系统时间,可将当前时间和日期返回到一个(6元)数组中。
>> date,now,clock
ans =
09-Apr-2011
ans =
7.3460e+005
ans =
1.0e+003 *
2.0110 0.0040 0.0090 0.0170 0.0430 0.0470
year,month,day,hour,minute,second
matlab中分别使用year,month,day,hour,minute,second从上面讲到的字符串和连续型日期时间格式中提取年月日时分秒等信息
>>[year(date),year(now)]
ans =
2011 2011
注意:上面的函数是没法从向量型日期时间格式中正确读取上述信息的
>>year(clock)
ans =
5 0 0 0 0 0
Matlab中处理日期与时间的函数详解
- Matlab用三种格式来表示日期与时间
(1)双精度型日期数字:一个日期型数字代表从公元0年到某一日期的的天数,例如,2008年8月26日夜时0点钟被表示为733646,而这同一天的中午12点就被表示为733646.5,也就是说任何一个时刻都可以用一个双精度型数字表示。
(2)不同形式的日期字符串:Matlab定义了28种标准日期格式的字符串。
(3)数值型的日期向量:用一个6元数组来表示一个日期时间,例如,[2008 8 26 12 5 0]表示2008年8月26日12点05分0秒;用一个3元数组来表示一个日期,例如,[2008 8 26]表示2008年8月26日。 - 用日期数字表示日期使计算机更容易计算,但是不直观,因此Matlab提供了许多函数来实现三种日期格式之间的转化。
(1)datestr: 实现将日期数字和日期向量转化为日期字符串,可以在Matlab命令窗口中输入help datestr来查看关于datestr的用法。
(2)datenum: 实现将日期字符串和日期向量转化为日期数字,可以在Matlab命令窗口中输入help datenum来查看关于datenum的用法。
(3)datevec: 实现将日期数字和日期字符串转化为日期向量,可以在Matlab命令窗口中输入来help datevec查看关于datevec的用法。
5. &和&&的区别
&和&&都是逻辑运算符,主要有两点不同
- 当判断两个逻辑值,时,例如A&(f(x)>c)和A&&(f(x)>c)时,对于第一种情况,不论A是否为真,A和(f(x)>c)都要计算,但是对第二种情况,如果A是false,那么后面的(f(x)>c)就不用计算了,倘若f(x)是一个计算量大的函数,那么这将节省很多时间。
- &适用于矩阵间的逻辑运算,&&只适用于单个元素,包括数值和字符。
6. 清除&删除
clf 清除图形窗
clc 清除指令窗中显示内容
clear 清除matlab工作空间中保存的变量
close 关闭指定句柄对象窗口。
- clear 删除工作空间中的项目,释放系统内存
语法:
clear
clear name
clear name1 name2 name3...
clear global name
clear -regexp expr1 expr2...
clear global -regexp expr1 expr2...
clear keyword
clear('name1','name2','name3',...)
描述:
clear 删除工作空间内所有的变量,释放系统内存
clear name 仅仅删除工作空间内的m-文件或mex文件里的函数或者变量名。可以通过通配符()有选择地见删除项目。比如说:clear my可以删除工作空间任何名字里以my开头的变量。它可以移除m-文件里的断点,重新初始化永久性变量,只要是m-文件改变或者清除,函数或者永久的变量处设置的断点就会被移除。如果一个name是全局的,它会从当前的工作空间里删除,但是还可以取得的,因为声明它是全局的。如果name被锁锁上以后,它仍然停留在内存中。
clear name1 name2 name3...从工作空间里移除name1,name2,name3
clear global name移除全局变量名
clear -regexp expr1 expr2...清除所有匹配正则表达式expr1 expr2...的所有变量
clear golbal -regexp expr1 expr2....清除所有匹配正则表达式expr1 expr2...的所有全局变量:
clear keyword清除所有标有关键字的选项
clear('name1','name2','name3',...)是函数的语法表示。当变量名或函数名以字符串的形式存储时,用这种形式。
限制:
cleard 在UNIX系统里,不会影响分配给matlab进程的内存大小。
- close删除特定的参数
语法:
close 删除当前参数
close(h)删除名为h的参数
close name删除名为name的参数
close all删除所有句柄非隐藏时的参数
close all hidden删除包括句柄隐藏的参数
status=close(...)特定窗口删除时,返回1,否则返回0
弹出窗口定义操作函数
dialog 创建对话框
errordlg 创建错误对话框
helpdlg 创建帮助对话框
inputdlg 创建输入对话框
listdlg 创建选择列表对话框
msgbox 创建消息对话框
pagedlg 显示页面的版面对话框
printdlg 显示打印对话框
questdlg 问题对话框
uigetfile 文件检索对话框
uiputfile 为写入而显示的检索对话框
uisetcolor 从对话框交互式设置对象的ColorSpec
uisetfont 交互设置对象字体特征
warndlg 警告对话框
http://blog.csdn.net/ouening/article/details/52058193
http://www.cnblogs.com/nktblog/archive/2012/05/09/2491208.html