

使用 Matlab 隐藏的函数和功能
source link: https://zhiqiang.org/coding/undocumented-matlab-funtions-and-features.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用 Matlab 隐藏的函数和功能
没有人敢说 Matlab 的帮助文件不够详细和全面,但 Matlab 里面的确存在一些功能和函数,你很难找到它的帮助文档。下面列举一些,以后碰到其它的也会放到这里来:
1. ismembc
, ismembc2
Matlab 自带的ismember
函数用来在一个数值数组或 cell 数组里查找数值和字符串,但ismember
函数是顺序查找的线性算法,如果原数组是排好序的,用二分查找可以将查询速度提升到loglog ,对于大数组的查询速度有数量级的提升。ismembc
和ismembc2
即为 Matlab 自带但没有正式帮助文档的二分查找函数。
用法很简单,b = ismembc(t, X)
,i = ismembc2(t, X)
,其中前者返回 t 是否存在于 X 中,后者返回 t 在 X 中的位置,其中 X 必须为递增的的数值向量。
2. datevecmx, datenummx
处理日期的 mex 版函数,用于在日期的向量表示和序列值表示之间的转换。详细情况可参考Matlab 中 datestr 和 datenum 函数效率问题。
3. feature
feature 函数主要用来在 Matlab 内部接受操作系统和硬件的相关信息,比如 feature('memstats')可获取当前内存使用状况, feature(『DumpMem』) 可查看已载入的内存的具体内容, feature('numcores')获取 CPU 数量, feature('getos')获取操作系统类型等,更多相关信息可参考Undocumented feature() function。
4. Profile
Profiler 是个好东西,可以查看程序的每个函数所占用的时间,从而确定程序效率的瓶颈所在。但在大规模计算中,内存也是一个很重要的指标,而 Profiler 默认并不监控各个程序的内存使用情况,在正规帮助文件中也没有告诉使用者有这个功能。
profile('-memory','on');
这个指令是用来打开 Profiler 的内存监控功能,打开后, Profiler 界面上多了 Allocated Memory、Freed Memory、Self Memory 和 Peak Memory 四列,全方位监控程序的内存使用情况。
Q. E. D.

Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK