Answers:
可以使用R取代MATLAB吗?
是。
我使用MATLAB已有多年,但最近3年主要切换到R。在这一点上,它们有很多共同点。这部分取决于您的领域和用例。正如斯宾塞·格雷夫斯(Spencer Graves)先前所说,这还取决于您“碰巧经常去教堂”。最好在决定之前查看MATLAB工具箱和CRAN的特定任务。
几年前,最近又在R-Help上问了一个类似的问题。 David Hiebeler(缅因大学)保持了广泛的R / MATLAB比较,并且是该主题的最佳参考。您还可以查看基本功能的比较。
这是我过去观察到的一些事情,都不应该成为破坏交易的事情。
因此,如果易用性不是主要考虑因素(并且没有其他商业理由要避免使用开源工具),那么我认为使用R确实是有道理的。强大的社区(R邮件列表很棒),正在迅速发展(请参阅CRAN),并且它是免费的(这不是一个小问题!)。
编辑:我只想再说一点:“使用R和MATLAB进行功能数据分析”一书包括了“ Matlab和R语言的本质比较”一章。这涵盖了一些重要的语法差异(例如,点的解释或方括号[]的含义)。对于那些对函数式编程感兴趣的人(用任何一种语言),这本书本身都是值得阅读的。
R是用于统计数据分析和图形的环境。MATLAB的起源是数值计算。如果您将基本语言实现用于数据操作(例如,矩阵/向量运算),则它们具有许多共同点。
R具有难以在其他地方找到的统计功能(> CRAN上有2000个Packages ),许多统计学家都使用它。另一方面,MATLAB有许多(昂贵的)工具箱用于工程应用,例如
我同时使用R和MATLAB来解决问题并构建与环境工程相关的模型,并且两个系统之间存在很多重叠之处。在我看来,MATLAB的优势在于专门针对特定领域的应用程序。一些例子是:
流线之类的功能有助于流体动力学研究。
工具箱,例如图像处理工具集。我还没有找到一个R包可以提供类似分水岭算法的工具的等效实现。
我认为MATLAB提供了更好的交互式图形功能。但是,我认为R会根据应用程序产生更好的静态打印质量图形。与Ryacas或rSymPy等R等价物相比,MATLAB的符号数学工具箱还具有更好的集成性和功能。MATLAB编译器的存在还允许基于MATLAB代码的系统独立于MATLAB环境进行部署-尽管其可用性取决于您需要投入多少资金。
我还要注意的另一件事是,MATLAB调试器是我使用过的最好的调试器之一。
我看到的R的主要优点是系统的开放性和扩展性。这导致了CRAN上软件包的惊人多样性。我知道Mathworks还维护着一个由用户提供的工具箱的存储库,由于我使用的不多,所以我无法进行公平的比较。
R的开放性还扩展到链接已编译的代码。前一段时间我有一个用Fortran编写的模型,我试图在使用R或MATLAB作为前端来帮助准备输入和处理结果之间做出决定。我花了一个小时阅读有关MEX编译代码接口的信息。当我发现必须编写并维护一个单独的Fortran例程,该例程执行一些复杂的指针操作以管理接口时,我搁置了MATLAB。
R接口包括调用.Fortran([子程序名称],[参数列表]),并且更加快捷,简洁。
与R相比,MATLAB的一大优势是MATLAB文档的质量。作为开源的R在这方面受到许多开源项目共有的功能的困扰。
但是,R是一种非常有用的环境和语言。它在生物信息学领域被广泛使用,并且在该领域有许多有用的软件包。
R的替代方法是Octave(http://www.gnu.org/software/octave/),它与MATLAB非常相似,它可以运行MATLAB脚本。
以我的经验,从MATLAB迁移到Python是一个更容易的过渡-具有numpy / scipy的 Python 在样式和功能方面比R更接近MATLAB。还有开放源代码的直接MATLAB克隆Octave和Scilab。
当然,MATLAB可以做R无法做到的很多事情-在我的领域,MATLAB被大量用于实时数据采集-大多数硬件公司都包括MATLAB接口。尽管RI可能做到这一点,但想象会更多。Simulink还提供了我认为R所缺少的全部功能。我敢肯定还有更多功能,但我对R不太熟悉。
简短的回答:不,当然不是。尽管任何一组数学软件包都有其重叠之处,但它们始终会对某些问题领域产生偏见。在是否要使用其中一个软件包中,这些偏见非常明显。
MATLAB可以做到R无法做到的一个例子是与实时硬件接口,以进行信号处理/采集和控制。可以将MATLAB中的Simulink模型配置为在计算机上模拟运行,然后再编译代码以在实际系统上执行,以测量数据作为输入并计算适当的输出(控制系统的模拟现已完全运行之前的状态)之一)。使用机器中合适的硬件板,您可以通过PC运行实时控制系统。
相比之下,R似乎牢牢地固定在统计的角色中,我确信它在性能上胜过MATLAB的工作。同样,在符号数学方面,Mathematica比MATLAB更好。在常规编程方面,Python比MATLAB更好。在实际创建图形时,gnuplot比所有其他方法都要好(我猜是这样);等等。
我们不能,因为这是我们的客户期望/要求的。
借助sqldf软件包,R不仅能够进行统计,而且还能够进行严重的数据挖掘-假设您的计算机上有足够的RAM。
通过RServe软件包,R成为常规的TCP / IP服务器;因此,您可以使用Java(或其他任何具有API的语言)调用R。R中还有一个包可以调用java或R。
作为MATLAB和R的用户,我认为它们是非常不同的应用程序。我本人具有计算机科学等背景知识,我不禁会认为R是由统计学家为统计学家而MATLAB是由程序员为程序员。
R使得可视化和计算各种统计数据变得非常容易,但是如果我愿意的话,我不会用它来实现与信号处理相关的任何事情。
总而言之,如果要进行统计,请使用R。如果要进行编程,请使用MATLAB或某种编程语言。
R
是一种编程语言。
在matlab中,对交互式图形的支持比在R中要好得多xlim
。与该任务的任何R方法相比,Matlab还可以更好地处理多面板图。通常,R图形具有1960年代的感觉。它适合发布,但不是交互式探索数据的最佳解决方案。