答案 0 :(得分:128)
你能用R代替MATLAB吗?
是
我使用MATLAB多年,但在过去3年里主要转向R.在这一点上,他们有更多的共同点。它部分取决于您的领域和用例。而Spencer Graves said previously,也取决于你经常遇到的“教会”。最好在决定之前查看特定任务的MATLAB toolkit与CRAN。
类似问题asked on R-Help a few years ago和again more recently。 David Hiebeler(在缅因大学)保持广泛R/MATLAB comparison,是该主题的最佳参考。您还可以查看this comparison of basic functions。
以下是我过去观察过的一些事情,其中没有一件事应该是交易破坏者。
因此,如果易用性不是主要关注点(并且没有其他商业理由可以避免使用开源工具),那么我认为使用R有一个真实的案例。有一个非常强大的社区(R邮件列表是惊人的),正在迅速发展(见CRAN),它是免费(这不是一个小问题!)。
编辑:我想再补充一点:本书"Functional Data Analysis with R and MATLAB"包含了一篇关于“Matlab和R语言的基本比较”的章节。这涵盖了一些重要的语法差异(例如点的解释,或方括号[]的含义)。对于任何对函数式编程感兴趣的人(无论使用哪种语言),本书都非常值得一读。
答案 1 :(得分:32)
R是统计数据分析和图形的环境。 MATLAB的起源是数值计算。如果您将基本语言实现用于数据操作(例如,矩阵/向量操作),则基本语言实现具有许多共同特征。
R在其他地方很难找到统计功能(CRAN上的> 2000个包),许多统计人员都使用它。另一方面,MATLAB有许多(昂贵的)工具箱用于工程应用,如
答案 2 :(得分:26)
我使用R和MATLAB来解决问题并构建与环境工程相关的模型,这两个系统之间存在很多重叠。在我看来,MATLAB的优势在于专门的特定领域应用程序。一些例子是:
有助于流体动力学调查的精简等功能。
工具箱,例如图像处理工具集。我还没有找到一个R包,它提供了类似分水岭算法的工具的等效实现。
在我看来,MATLAB提供了更好的交互式图形功能。但是,我认为R会产生更好的静态打印质量图形,具体取决于应用程序。 MATLAB的符号数学工具箱也比R等效项(例如Ryacas或rSymPy)更好地集成和更强大。 MATLAB编译器的存在还允许基于MATLAB代码的系统独立于MATLAB环境进行部署 - 尽管它的可用性取决于您需要投入多少资金。
我应该注意的另一件事是MATLAB调试器是我使用过的最好的调试器之一。
我看到R的主要优点是系统的开放性和易于扩展的系统。这导致了CRAN上令人难以置信的多样化包。我知道Mathworks还维护着一个用户贡献工具箱的存储库,我无法进行公平比较,因为我没有那么多使用它。
R的开放性也延伸到编译代码中的链接。不久前我有一个用Fortran编写的模型,我试图决定使用R或MATLAB作为前端来帮助准备输入和处理结果。我花了一个小时阅读有关编译代码的MEX接口。当我发现我必须编写和维护一个单独的Fortran例程,为了管理接口而做了一些错综复杂的指针杂乱时,我搁置了MATLAB。
R接口包括调用.Fortran([子程序名称],[参数列表]),只是更快更干净。
答案 3 :(得分:22)
MATLAB优于R的一大优势是MATLAB文档的质量。作为开源的R,在这方面受到了损害,这是许多开源项目的共同特征。
然而,R是一种非常有用的环境和语言。它广泛用于生物信息学社区,并且在该领域有许多有用的包。R的替代是Octave(http://www.gnu.org/software/octave/),它与MATLAB非常相似,它可以运行MATLAB脚本。
答案 4 :(得分:21)
根据我的经验,从MATLAB迁移到Python是一个更容易的过渡 - 使用numpy/scipy的Python在风格和功能方面比R更接近MATLAB。还有开源直接MATLAB克隆Octave和Scilab
MATLAB无法做到这一点,R不能 - 在我的领域,MATLAB被大量用于实时数据采集 - 大多数硬件公司都包含MATLAB接口。虽然这可能与R有关,但我想它会涉及更多。另外,Simulink提供了一个完整的功能区域,我认为R中缺少这些功能。我确信还有更多功能,但我对R不太熟悉。
答案 5 :(得分:11)
简短回答:不,当然不是。虽然任何一套数学软件包都会有重叠,但它们总是会对某些问题域产生偏差。这些偏见强烈表明您是否想要使用其中一个包。
MAT不能做的事情就是R不能与信号处理/采集和控制的实时硬件接口。 MATLAB中的Simulink模型可以配置为在您的机器上运行模拟,然后编译代码以在真实系统上执行,将测量数据作为输入并计算适当的输出(在模拟控制系统之前是什么现在一个功能齐全的)。通过机器中相应的硬件板,您可以通过PC运行实时控制系统。
相比之下,R似乎在统计学中扮演着重要的角色,我确信它的表现超出了MATLAB的作用。同样,Mathematica在符号数学上优于MATLAB; Python在一般编程方面优于MATLAB; gnuplot在实际创建图表方面比所有人都好(呃,我假设);等等。答案 6 :(得分:11)
答案 7 :(得分:9)
我们不能,因为它是我们客户的期望/要求。
答案 8 :(得分:5)
使用sqldf软件包,R不仅能够进行统计,还能够进行严格的数据挖掘 - 假设您的计算机上有足够的RAM。
使用RServe包R成为常规的TCP / IP服务器;所以你可以用java(或任何其他语言,如果你有api)调用R。 R中还有一个包调用java out或R。
答案 9 :(得分:4)
作为MATLAB和R的用户,我认为它们是非常不同的应用程序。我自己有计算机科学等方面的背景,我不禁认为R是统计学家的统计学家,而MATLAB是程序员的程序员。
R使得可视化和计算各种统计内容变得非常容易,但如果由我决定,我不会用它来实现任何与信号处理相关的内容。
总而言之,如果要进行统计,请使用R.如果要编程,请使用MATLAB或某种编程语言。
答案 10 :(得分:2)
在matlab中支持交互式图形比在R中好得多。我讨厌matlab作为一种语言,但是当我看到用户如何使用鼠标操作探索数据时我会嫉妒,而我正在忙着用新值重复命令对于xlim
等,Matlab也可以比任何R方法更好地处理多面板图。通常,R图形具有20世纪60年代的感觉。它适用于发布,但不是交互式数据交换的最佳解决方案。