上QQ阅读APP看书,第一时间看更新
2.4 编程技巧
2.4.1 测定程序执行时间
测定程序执行时间通常是使用tic和toc函数,tic用于启动秒表,toc用于停止秒表。
【例2-16】 建立一个100×100的魔方矩阵,并测定运行时间。
运行后在命令行窗口观察运行结果为:
由于计算机的运算速度不同,所耗时间会不同。
2.4.2 程序的优化
毕竟MATLAB是一种解释性语言,同其他解释性语言一样,都存在着执行速度不够理想的问题。下面是一些加快MATLAB程序执行的方法。
(1)避免使用循环
MATLAB的一个不足是对矩阵的单个元素进行循环操作时运算速度很慢,应尽量避免使用循环。编程时,尽量对矩阵或矢量编程,把循环矢量化,这样不仅能够缩短程序长度,而且能提高程序执行效率。在必须使用多重循环的情况下,若两个循环执行的次数不同,则应在循环的内层执行次数多的,外层执行次数少的。
(2)对大型矩阵预先定义维数
在程序执行的过程中,有时要动态改变矩阵的维数,这将非常浪费时间。为此,应在定义大矩阵时,首先用函数(如zeros或ones)对矩阵定义好维数,然后再进行赋值,这样会提高程序的运行效率。
(3)优先使用内层函数
矩阵运算要首先考虑使用MATLAB内层函数,因为内层函数是由更底层的 C 语言构成,执行速度快于使用循环的矩阵运算。
(4)考虑接口语言
MATLAB支持同其他语言进行编译连接,如果已经采取了相应的措施,程序执行速度仍然很慢,则应考虑使用C语言或FORTRAN语言进行编程,然后编译连接,这样能显著地提高程序的运行速度。
【例2-17】 分别用循环和矩阵,计算1~10000整数的正弦值,并测定程序运行时间。
程序1:使用循环
运行后在命令行窗口观察运行结果为:
程序2:使用矩阵
运行后在命令行窗口观察运行结果为: