R无法做到的MATLAB能做什么?[关闭]


137

我经常听到人们抱怨MATLAB许可证的价格昂贵。然后,我不知道为什么他们不只是用八度[R 。但是后者对吗?可以使用R取代MATLAB吗?


13
顺便说一句,还有另一种开源替代方案:Octave与Matlab大部分兼容
-sellibitze

14
从技术上讲,可以用一种语言完成的任何事情都可以用任何一种语言完成(从“它可以计算什么”的角度来看)。这只是易用性和
易学

20
+1:Matlab会消耗我的软件预算。R还没有做到这一点。
Iterator

3
要更正一些其他陈述:不能重用Octave或FreeMat中的所有Matlab代码是不正确的。在其他版本中,有些功能根本无法很好地实现。我有大量的代码块,发现在这些功能类具有大致相似的功能的环境中重新实现更好。在Matlab具有Octave所没有的功能中,我在R,Python和Java和C中找到了替代。重新实现库比基本代码难。注意图书馆...
Iterator

5
这个问题的结束是没有道理的。这个问题不是关于轮询的,而是关于您可以在Matlab中完成什么而不能在R中完成。这些事情可以很容易地被引用枚举和支持。
Frank

Answers:


128

可以使用R取代MATLAB吗?

是。

我使用MATLAB已有多年,但最近3年主要切换到R。在这一点上,它们有很多共同点。这部分取决于您的领域和用例。正如斯宾塞·格雷夫斯Spencer Graves)先前所说,这还取决于您“碰巧经常去教堂”。最好在决定之前查看MATLAB工具箱CRAN的特定任务。

几年前最近又在R-Help上问了一个类似的问题。 David Hiebeler(缅因大学)保持了广泛的R / MATLAB比较,并且是该主题的最佳参考。您还可以查看基本功能的比较

这是我过去观察到的一些事情,都不应该成为破坏交易的事情。

  • 通常,MATLAB具有更好的编程环境(例如,更好的文档,更好的调试器,更好的对象浏览器),并且使用起来更加“轻松”(如果需要,您可以不进行任何编程就使用MATLAB)。 Simulink允许您通过连接图形中的块来直观地进行编程。 REvolution R通过提供更好的IDE和改进的调试来解决其中的一些差异,但仍落后一步。
  • 在正常配置下,MATLAB的运行速度要快一些(请参见此基准示例),尽管如果有问题可以采取一些措施来提高R性能。
  • 由于它是商业产品,因此可以说它还有更多的“产品”(在集成附件的意义上)和支持(但您为此付费)。请参阅产品清单。例如,它具有类似MATLAB编译器的功能,它创建了可以部署的可执行MATLAB程序。
  • 就包/工具包而言,MATLAB对物理科学提供了更多支持,而R在统计方面更强大,这并不是说其他​​人不能执行这些任务。而且它们都可以轻松扩展。

因此,如果易用性不是主要考虑因素(并且没有其他商业理由要避免使用开源工具),那么我认为使用R确实是有道理的。强大的社区(R邮件列表很棒),正在迅速发展(请参阅CRAN),并且它是免费的(这不是一个小问题!)。

编辑:我只想再说一点:“使用R和MATLAB进行功能数据分析”一书包括了“ Matlab和R语言的本质比较一章。这涵盖了一些重要的语法差异(例如,点的解释或方括号[]的含义)。对于那些对函数式编程感兴趣的人(用任何一种语言),这本书本身都是值得阅读的。


5
有一个很好的matlab / R参考,在这里展示了如何在每个参数中执行等效任务:math.umaine.edu/~hiebeler/comp/matlabR.html
Suppressingfire

4
“ [MATLAB]可以说有更多的产品和支持”。我不同意这一点。CRAN和Bioconductor(用于R)比MATLAB +工具箱+文件交换要全面得多。另外,根据我的经验,R-Help邮件列表通常与付费支持一样有效。我同意MATLAB编译器是不是在复制R.一个很大的特点
里奇棉

2
很多时候,R函数的记录要比Matlab中的更好。我发现Matlab文档的质量因功能而异以及(商业)工具箱之间差异很大。我同意Matlab IDE在某种程度上更适合初学者,但是如果您每天使用它,它并不比ESS for R 更好
Matti Pastell '04

10
RStudio是一个不错的新R IDE
Jason Axelson

1
太可惜了,这个问题被关闭了。这是我在StackOverflow上见过的最好的技术讨论之一。
kd4ttc

32

R是用于统计数据分析和图形的环境。MATLAB的起源是数值计算。如果您将基本语言实现用于数据操作(例如,矩阵/向量运算),则它们具有许多共同点。

R具有难以在其他地方找到的统计功能(> CRAN上有2000个Packages ),许多统计学家都使用它。另一方面,MATLAB有许多(昂贵的)工具箱用于工程应用,例如

  • 图像处理/图像采集
  • 过滤器设计
  • 模糊逻辑/模糊控制,
  • 偏微分方程
  • 等等

R有一个名为CRAN的大型软件包存储库,它提供了许多附加功能(尽管我同意您的一般观点)。例如:PDE求解器:cran.r-project.org/web/packages/deSolve/index.html
Suppressingfire

7
MATLAB还具有类似于CRAN的功能:大小可观的文件交换(mathworks.com/matlabcentral/fileexchange),具有超过10,000个用户提交的功能和工具箱,可免费使用。
gnovice 2010年

2
在MATLAB Central的File Exchange之外,还有一个相当大的免费MATLAB代码库。
Predictor

26

我同时使用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([子程序名称],[参数列表]),并且更加快捷,简洁。


11
我还应该提到R在我的书中对于Sweave系统具有很大的优势,可以实现可重复的研究。在我看来,允许任何人使用免费工具重新运行和分析纸质或报告背后的计算非常重要。
Sharpie

22

与R相比,MATLAB的一大优势是MATLAB文档的质量。作为开源的R在这方面受到许多开源项目共有的功能的困扰。

但是,R是一种非常有用的环境和语言。它在生物信息学领域被广泛使用,并且在该领域有许多有用的软件包。

R的替代方法是Octavehttp://www.gnu.org/software/octave/),它与MATLAB非常相似,它可以运行MATLAB脚本。


2
所有R提交的软件包都经过测试以获取文档和示例。
Fernando

21

以我的经验,从MATLAB迁移到Python是一个更容易的过渡-具有numpy / scipy的 Python 在样式和功能方面比R更接近MATLAB。还有开放源代码的直接MATLAB克隆OctaveScilab

当然,MATLAB可以做R无法做到的很多事情-在我的领域,MATLAB被大量用于实时数据采集-大多数硬件公司都包括MATLAB接口。尽管RI可能做到这一点,但想象会更多。Simulink还提供了我认为R所缺少的全部功能。我敢肯定还有更多功能,但我对R不太熟悉。


11

简短的回答:不,当然不是。尽管任何一组数学软件包都有其重叠之处,但它们始终会对某些问题领域产生偏见。在是否要使用其中一个软件包中,这些偏见非常明显。

MATLAB可以做到R无法做到的一个例子是与实时硬件接口,以进行信号处理/采集和控制。可以将MATLAB中的Simulink模型配置为在计算机上模拟运行,然后再编译代码以在实际系统上执行,以测量数据作为输入并计算适当的输出(控制系统的模拟现已完全运行之前的状态)之一)。使用机器中合适的硬件板,您可以通过PC运行实时控制系统。

相比之下,R似乎牢牢地固定在统计的角色中,我确信它在性能上胜过MATLAB的工作。同样,在符号数学方面,Mathematica比MATLAB更好。在常规编程方面,Python比MATLAB更好。在实际创建图形时,gnuplot比所有其他方法都要好(我猜是这样);等等。


11
实际上,众所周知R对于创建图形非常有用。他们看起来也很好。实际上,让我研究R的第一个原因是我嫉妒我的同事使用R制作的一些漂亮的图形。因此我从gnuplot切换到从不回头。
弗兰克(Frank)2010年

11

我同意以上给出的许多答案。由于答案是特定于MATLAB和R功能的差异集的,因此我将提到一个非常重要的问题:MATLAB包含JVM,并且与Java具有完美而强大的互操作性。MATLAB用户可以访问Java的所有庞大库。MATLAB IDE几乎可以用作穷人的Eclipse。相比之下,尽管rJava的创建者(Roman Francois)付出了非常宝贵的努力,但它还是很不成熟。


9

我们不能,因为这是我们的客户期望/要求的。


3
这是一个完全有效的答案。重要的是要意识到,有许多行业根本不会接受开源解决方案。R板有一些可疑的合规性要求。
布兰登·贝特尔森

1
@BrandonBertelsen:具体来说是什么?
smci 2012年

3
@smci该声明不再像2010年那样正确。R的使用激增。
布兰登·贝特尔森

好的,但是从2010年起您可以告诉我们什么合规性要求使R脱颖而出(哪些仍然是问题)?
smci 2012年

1
我们的客户通常也使用MATLAB,经常需要我们与他们交换代码和模型。通常,您会发现只有使用R的行业才最关注数据集和统计信息。
纽布(Nzbuu)2012年

5

借助sqldf软件包,R不仅能够进行统计,而且还能够进行严重的数据挖掘-假设您的计算机上有足够的RAM。

通过RServe软件包,R成为常规的TCP / IP服务器;因此,您可以使用Java(或其他任何具有API的语言)调用R。R中还有一个包可以调用java或R。


没错,但问题是“ R无法做到的MATLAB能做什么?” 不是“ R可以做MATLAB无法做到的?”。
马雷克(Marek)

4

作为MATLAB和R的用户,我认为它们是非常不同的应用程序。我本人具有计算机科学等背景知识,我不禁会认为R是由统计学家为统计学家而MATLAB是由程序员为程序员。

R使得可视化和计算各种统计数据变得非常容易,但是如果我愿意的话,我不会用它来实现与信号处理相关的任何事情。

总而言之,如果要进行统计,请使用R。如果要进行编程,请使用MATLAB或某种编程语言。


4
一起来,R是一种编程语言。
Frank

6
“ Matlab是由程序员为程序员服务的”。MATLAB最初是专门为线性代数编写的。它不是通用的编程语言。此后,许多通用语言功能都被添加。(一年中只有一个可行的面向对象系统。)
Richie Cotton

9
“ Matlab是程序员为程序员准备的”:您是认真的吗?真正困扰我MATLAB的唯一问题是,鉴于某些情况下语言的极端笨拙,发明该语言的人不是程序员。
汉尼斯·奥夫雷恩

13
R由统计学家创建,Matlab由工程师创建。两者都是功能齐全的编程语言。
Sharpie

3
@smci我上次将生产的Matlab代码换成R代码是在2008年在美国国家气象局(National Weather Service),此后系统一直正常运行。使用递归算法对数千兆字节的数据集进行核心处理绝不是代表整个科学计算的任务,因此对于做出有关编程语言适用性的一般性陈述,基准的选择不多。
Sharpie

2

在matlab中,对交互式图形的支持比在R中要好得多xlim。与该任务的任何R方法相比,Matlab还可以更好地处理多面板图。通常,R图形具有1960年代的感觉。它适合发布,但不是交互式探索数据的最佳解决方案。


作为这两个系统的交互式绘图工具的重度用户,我会同意这个限制(例如,当我努力推动两者时),但是您可能会错过R中一些非常有用的交互式绘图工具。请查看以下软件包:iplot,Acinonyx,Rstudio的操纵等等。为了娱乐,请查看此示例
Iterator 2012年

“ R图形具有1960年代的感觉”-可能是几年前的真实情况。如今,随着ggplot2迅速流行,R图表具有现代而美丽的外观。参见例如:r-bloggers.com/?s=ggplot
arielf 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.