观点 | 为什么我对MATLAB情有独钟

2017 年 12 月 4 日 机器之心

选自Medium

作者:Christopher Madan

机器之心编译

参与:路雪、黄小天


本文作者 Christopher Madan 喜欢用 MATLAB 编程,尽管他是一个认知心理学家/神经科学家,编程对其来讲更多地是一个完成目标的工具。这篇文章的灵感来自 Olivia Guest 的博文《I hate Matlab: How an IDE, a language, and a mentality harm》,Olivia Guest 称自己不喜欢 MATLAB 不只是因为它是一款闭源、付费的软件,更主要的原因是 MATLAB 的有限资源限制了学生和科学家的技能。不过 Christopher Madan 却站在支持 Matlab 的角度,毕竟作者的绝大部分编程通过 MATLAB 完成,并且之前出版过针对行为研究者的 MATLAB 入门书籍(http://www.cmadan.com/book.php)。



MATLAB 的图形用户界面(GUI)具有很多功能。这对了解工作环境的多个变量、在当前工作环境中拥有代码编辑器窗口很有用处。在 MATLAB 的 GUI 中,你还可以在电子表格式的编辑器中编辑变量。尽管该特征就是如此,但是我同样认为用这种方式编辑变量是一种坏习惯。当然可以这样辩解:「如果那样的话,这个特征就不会有了!」可能吧,不过我仍然认为学习在 MATLAB 中编程需要一些指导(最好是有一个经验丰富的同事,或者至少有在线课程或书籍),只依赖 MATLAB 的特征进行技巧学习是不公平的。我教 MATLAB 的时候,不使用任何 GUI 特征进行变量编辑,不使用绘图工具。原因在于即使它具备这些特征,我们也未必就要使用它。不过特征多一些当然比少的好。


我每周使用 MATLAB 10-20 个小时(平均),但是我还使用很多其他编程语言,包括 Python。你需要重点考虑你想用某种语言做什么。对于认知神经科学研究而言,MATLAB 非常有用,因为它具备 SPM(用于 fMRI)、 EEGLAB(用于 EEG)等工具箱。没有太多编程能力也可以使用这些工具箱,不过熟练使用 MATLAB 可以帮助你深入了解情况,对工具箱的作用、如何调整代码获取一些内部变量有更好的了解。


在分析行为数据时,MATLAB 也很有用,因为它本身就很方便交互使用。必须承认,这可能导致面条式代码(spaghetti code),不过正因如此,接受编写代码文档和结构的训练对构建可复现分析流程非常重要。在使用 MATLAB 之前,我使用的语言是 Python,不过我厌倦了在提交代码至脚本和功能之前无法积极处理代码、无法「自由地」写代码。Python 由志愿者开发,而 Matlab 由公司开发,因此有更全面的途径实现功能开发(如整合性的绘图功能,而不是先使用 matplotlib 再使用 seaborn)。MATLAB 内部的工具箱内还具备更多一致性,因为公司在管理不同团队的开发活动。


在对比不同编程语言的时候,无疑它们各有独特优势。我认为 MATLAB 擅长提供灵活的工作空间——比如,通常 MATLAB 并不允许在同一文件中有多个外部可访问的函数,但是这有简单的解决对策,可在一分钟内搜索到需要的函数。展开来讲,一个重要的问题是:认知心理学家/神经科学研究者应该具备多少编程技能?在我看来,他们不应该在电子表格程序中进行分析,但我也不认为他们应该具备开发分析工具箱的技能。


我喜欢使用 MATLAB 的部分原因是发现它的语法比 Python 或 R 更加直观。不过也不会受到它的限制,对其他采用类似语法的语言我也很感兴趣。


结语


本文受 Olivia 博文的启发而写,但并非直接回应。Olivia 文中的一些主题本文没有涉及,比如 MATLAB 没有一个正式指定的语法,并可在新版中改变语言——也许我忽略了这一问题是因为我不是正式的编程人员。尽管 Matlab 是封闭的,但很多内部代码是可见的,因此我不认为使用 MATLAB 是「不道德」的行为。


原文链接:https://medium.com/@cMadan/why-i-love-matlab-aca95bec731e


MathWorks 最新发布的版本 MATLAB R2017b 完善了对深度学习的全面支持,可帮助工程和系统集成团队将 MATLAB 拓展用于深度学习。本周二,MathWorks 高级应用工程师陈建平将微信直播,分享如何开发一个能够真正下载到嵌入式 GPU 环境的深度学习应用。点击阅读原文,参与注册报名。


登录查看更多
5

相关内容

MATLAB 是 Matrix Laboratory 的缩写,是一款由美国 MathWorks 公司出品的商业数学软件。是一种适用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
专知会员服务
145+阅读 · 2020年6月15日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
264+阅读 · 2020年6月10日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【实用书】Python数据科学从零开始,330页pdf
专知会员服务
141+阅读 · 2020年5月19日
最新《机器学习理论初探》概述
专知会员服务
44+阅读 · 2020年5月19日
21个必须知道的机器学习开源工具!
AI100
13+阅读 · 2019年9月13日
Python数据可视化2018:为什么这么多的库?
Python程序员
4+阅读 · 2019年1月2日
数据科学、机器学习IDE概览
论智
9+阅读 · 2018年11月12日
为什么你应该学 Python ?
计算机与网络安全
4+阅读 · 2018年3月24日
用于数学的 10 个优秀编程语言
算法与数据结构
13+阅读 · 2018年1月5日
MATLAB人工神经网络教程
七月在线实验室
8+阅读 · 2017年9月6日
这位程序员为什么要弃用Facebook?
CSDN
5+阅读 · 2017年7月14日
Arxiv
5+阅读 · 2019年10月11日
Arxiv
8+阅读 · 2019年5月20日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
4+阅读 · 2018年6月1日
Arxiv
5+阅读 · 2018年2月26日
VIP会员
相关资讯
21个必须知道的机器学习开源工具!
AI100
13+阅读 · 2019年9月13日
Python数据可视化2018:为什么这么多的库?
Python程序员
4+阅读 · 2019年1月2日
数据科学、机器学习IDE概览
论智
9+阅读 · 2018年11月12日
为什么你应该学 Python ?
计算机与网络安全
4+阅读 · 2018年3月24日
用于数学的 10 个优秀编程语言
算法与数据结构
13+阅读 · 2018年1月5日
MATLAB人工神经网络教程
七月在线实验室
8+阅读 · 2017年9月6日
这位程序员为什么要弃用Facebook?
CSDN
5+阅读 · 2017年7月14日
Top
微信扫码咨询专知VIP会员