加速Matlab编程指南—持续更新
加速Matlab编程指南(CUDA实现)
本教程适用于具有一定Matlab编程基础的读者。说是教程,更像是读书笔记,文中出现的内容多是笔者阅读以下资料的归纳和整理。主要参考的书籍及资料有:
《加速MATLAB编程指南CUDA实现》 赵地 清华大学出版社
《Matlab从入门到精通》
https://www.mathworks.com
MATLAB正版下载
为什么使用MATLAB
众所周知,当前机器学习,深度学习的代码实现往往都是在python上。笔者为什么非要在MATLAB上编写代码呢,主要原因有以下几点:
- 配置简单 ,MATLAB更像是一款应用软件。环境配置和代码编译由程序后台自动执行,只用编写代码并执行即可,
- 语言简单,MATLAB更注重算法,而不是代码实现。这里的算法是指按照人类思维方式,系统而又完整地描述解决问题的方案,因此按照算法编写的MATLAB程序在语言上,与算法本身具有很大的相似性。在MATLAB实现某种算法,只需创建矩阵和对矩阵进行运算;
- 可视化高 ,往往一些数学运算的代码实现是繁琐的,例如:计算FFT(快速傅里叶变换),MATLAB提供了fft()函数,工程师们已经将该函数的底层代码优化到了尽可能的高效。因此我们无需自己设计代码和对其修改,拿来即用。除此之外还需许多丰富的工具箱,和简洁明了的图形化操作界面;
- 最后,其实最主要的原因还是因为笔者长期处在高校,学术界使用MATLAB的情况颇多。笔者科研中常常使用MATLAB,也遇到诸多麻烦,结合了自己使用MATLAB的情况,希望能够分享给大家一些使用MATLAB的技巧。
总结就是:因此MATLAB更注重算法的研究,而不是代码的实现。作为初学者,使用MATLAB学习,能够避免繁杂的编程语言学习,将更多的时间放在算法的数学思考上面。
MATLAB程序的性能评估
MATLAB程序的性能评估(profiling)是指对MATLAB程序的空间复杂度(space complexity)和时间复杂度(time complexity)进行分析。不过,最简单粗暴的方式,就是对MATLAB函数的运行时间进行分析,自然越快越好。
bench()函数
运行MATLAB程序之前,程序员首先希望知道当前计算机的性能。MATLAB的bench()函数的功能是运行MATLAB基准程序,测试MATLAB在本计算机上的性能。
在命令窗口输入bench();
tic()/toc()函数
执行tic()函数时,程序将启动秒表计时器(stopwatch),toc()函数将种植秒表计时器并读数,tic()与toc()函数的调用格式是:
tic
% 程序中计时的部分;
toc
这里测试一个XX方法: