前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >观点 | 为什么我对MATLAB情有独钟

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

作者头像
机器之心
发布2018-05-09 11:16:57
9360
发布2018-05-09 11:16:57
举报
文章被收录于专栏:机器之心机器之心

选自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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档