收集一些Matlab的小TIPS

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. 调试程序

常用调试方法。

  1. 设置或清除断点:使用快捷键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**

  1. 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. &和&&的区别

&和&&都是逻辑运算符,主要有两点不同

  1. 当判断两个逻辑值,时,例如A&(f(x)>c)和A&&(f(x)>c)时,对于第一种情况,不论A是否为真,A和(f(x)>c)都要计算,但是对第二种情况,如果A是false,那么后面的(f(x)>c)就不用计算了,倘若f(x)是一个计算量大的函数,那么这将节省很多时间。
  2. &适用于矩阵间的逻辑运算,&&只适用于单个元素,包括数值和字符。

6. 清除&删除

clf 清除图形窗
clc 清除指令窗中显示内容
clear 清除matlab工作空间中保存的变量
close 关闭指定句柄对象窗口。

  1. 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容