R MAT不能做什么?

时间:2009-11-15 16:59:11

标签: matlab r scientific-computing

我经常听到有人抱怨MATLAB许可证有多贵。然后我想知道为什么他们不只是使用OctaveR。但后者是对的吗?你能用R代替MATLAB吗?

11 个答案:

答案 0 :(得分:128)

  

你能用R代替MATLAB吗?

我使用MATLAB多年,但在过去3年里主要转向R.在这一点上,他们有更多的共同点。它部分取决于您的领域和用例。而Spencer Graves said previously,也取决于你经常遇到的“教会”。最好在决定之前查看特定任务的MATLAB toolkitCRAN

类似问题asked on R-Help a few years agoagain more recentlyDavid Hiebeler(在缅因大学)保持广泛R/MATLAB comparison,是该主题的最佳参考。您还可以查看this comparison of basic functions

以下是我过去观察过的一些事情,其中​​没有一件事应该是交易破坏者。

  • 通常,MATLAB有一个更好的编程环境(例如更好的文档,更好的调试器,更好的对象浏览器)并且“更容易”使用(如果你愿意,你可以使用MATLAB而不进行任何编程)。 Simulink允许您通过连接图形中的块进行可视化编程。 REvolution R is addressing some of these differences通过提供更好的IDE来改进调试,但它仍然落后了一步。
  • 使用正常配置(see this benchmark for an example)时,MATLAB的速度要快一些,但如果出现问题,可以采取一些措施来提高R性能。
  • 由于它是商业性的,它也可以说有更多的“产品”(在集成附加组件的意义上)和支持(但你付出代价)。请参阅product list。例如,它有the MATLAB compiler之类的东西,可以创建可以部署的可执行MATLAB程序。
  • 就包/工具包而言,MATLAB对物理科学有更多的支持,而R对统计学更强,这并不是说对方不能执行这些任务。而且它们都可以轻松扩展。

因此,如果易用性不是主要关注点(并且没有其他商业理由可以避免使用开源工具),那么我认为使用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的替代是Octavehttp://www.gnu.org/software/octave/),它与MATLAB非常相似,它可以运行MATLAB脚本。

答案 4 :(得分:21)

根据我的经验,从MATLAB迁移到Python是一个更容易的过渡 - 使用numpy/scipy的Python在风格和功能方面比R更接近MATLAB。还有开源直接MATLAB克隆OctaveScilab

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年代的感觉。它适用于发布,但不是交互式数据交换的最佳解决方案。