Was kann MATLAB, was R nicht kann? [geschlossen]

137

Ich höre oft Leute, die sich beschweren, wie teuer MATLAB- Lizenzen sind. Dann frage ich mich, warum sie nicht einfach Octave oder R verwenden . Aber ist letzteres richtig? Können Sie R verwenden, um MATLAB zu ersetzen?

Frank
quelle
13
Übrigens
14
Technisch gesehen kann alles, was in einer Sprache getan werden kann, in jeder Sprache getan werden (unter dem Gesichtspunkt "Was kann es berechnen?"). Es ist nur eine Frage der Benutzerfreundlichkeit und des Lernens
BlueRaja - Danny Pflughoeft
20
+1: Matlab kann mein Software-Budget verschlingen. R hat das noch nicht geschafft.
Iterator
3
Um einige andere Aussagen zu korrigieren: Es ist nicht richtig, dass man den gesamten Matlab-Code in Octave oder FreeMat wiederverwenden kann. Es gibt einige Funktionsklassen, die in den anderen Versionen überhaupt nicht gut implementiert sind. Ich habe große Codeblöcke, die ich in Umgebungen mit ungefähr ähnlichen Funktionen für nur diese Funktionsklassen besser neu implementieren konnte. Von der Funktionalität, die Matlab gegenüber Octave nicht bietet, habe ich Ersatz in R, Python und in gewissem Maße in Java und C gefunden. Die Neuimplementierung von Bibliotheken ist schwieriger als der Basiscode. Achten Sie auf Bibliotheken ...
Iterator
5
Das Schließen dieser Frage ist nicht gerechtfertigt. Bei dieser Frage geht es nicht um Umfragen, sondern darum, was genau Sie in Matlab tun können, aber nicht in R. Solche Dinge können leicht aufgezählt und durch Referenzen unterstützt werden.
Frank

Antworten:

128

Können Sie R verwenden, um MATLAB zu ersetzen?

Ja.

Ich habe MATLAB jahrelang benutzt, aber in den letzten 3 Jahren hauptsächlich auf R umgestellt. Zu diesem Zeitpunkt haben sie viel mehr gemeinsam als nicht. Dies hängt teilweise von Ihrem Fachgebiet und Ihrem Anwendungsfall ab. Und wie Spencer Graves zuvor sagte , hängt es auch davon ab, welche "Kirche Sie gerade besuchen". Am besten schauen Sie sich das MATLAB-Toolkit vs. CRAN für eine bestimmte Aufgabe an, bevor Sie sich entscheiden.

Eine ähnliche Frage wurde vor einigen Jahren und in jüngerer Zeit erneut bei R-Help gestellt . David Hiebeler (an der University of Maine) führt einen umfassenden R / MATLAB-Vergleich und ist die beste Referenz zu diesem Thema. Sie können diesen Vergleich der Grundfunktionen auch überprüfen .

Hier sind einige der Dinge, die ich in der Vergangenheit beobachtet habe, von denen keines Deal-Breaker sein sollte.

  • Im Allgemeinen hat MATLAB eine bessere Programmierumgebung (z. B. bessere Dokumentation, bessere Debugger, besserer Objektbrowser) und ist "einfacher" zu verwenden (Sie können MATLAB verwenden, ohne zu programmieren, wenn Sie möchten). Mit Simulink können Sie visuell programmieren, indem Sie Blöcke in Diagrammen verbinden. REvolution R behebt einige dieser Unterschiede, indem es eine bessere IDE mit verbessertem Debugging bereitstellt, aber es ist immer noch ein Schritt zurück.
  • MATLAB ist mit der normalen Konfiguration etwas schneller ( siehe diesen Benchmark für ein Beispiel ), obwohl einige Dinge getan werden können, um die R-Leistung zu verbessern, wenn dies zu einem Problem wird.
  • Da es kommerziell ist, hat es wohl auch mehr "Produkte" (im Sinne von integrierten Add-Ons) und Support (aber Sie zahlen dafür). Siehe die Produktliste . Zum Beispiel hat es Dinge wie den MATLAB-Compiler, der ausführbare MATLAB-Programme erstellt, die bereitgestellt werden können.
  • In Bezug auf Pakete / Toolkits bietet MATLAB viel mehr Unterstützung für die Naturwissenschaften, während R für Statistiken stärker ist, was nicht heißt, dass der andere diese Aufgaben nicht ausführen kann. Und beide können problemlos erweitert werden.

Wenn also die Benutzerfreundlichkeit kein Hauptanliegen ist (und es keinen anderen geschäftlichen Grund gibt, die Verwendung eines Open-Source-Tools zu vermeiden), dann gibt es meiner Meinung nach einen echten Grund für die Verwendung von R. Es hat einen sehr Eine starke Community (die R-Mailinglisten sind erstaunlich) entwickelt sich rasant (siehe CRAN) und ist kostenlos (was kein kleines Problem ist!).

Bearbeiten: Ich möchte nur einen weiteren Punkt hinzufügen: Das Buch "Funktionale Datenanalyse mit R und MATLAB" enthält ein Kapitel über die "wesentlichen Vergleiche der Matlab- und R-Sprachen". Dies deckt einige wichtige Syntaxunterschiede ab (z. B. die Interpretation eines Punkts oder die Bedeutung von eckigen Klammern []). Das Buch selbst ist für alle lesenswert, die sich für funktionale Programmierung interessieren (in beiden Sprachen).

Shane
quelle
5
Es gibt eine nette Matlab / R-Referenz, die zeigt, wie man jeweils gleichwertige Aufgaben ausführt
Suppressingfire
4
"[MATLAB] hat wohl auch mehr Produkte und Support". Ich bin damit nicht einverstanden. CRAN und Bioconductor (für R) sind viel umfassender als MATLAB + die Toolboxen + der Dateiaustausch. Außerdem ist die R-Help-Mailingliste meiner Erfahrung nach normalerweise genauso effektiv wie bezahlter Support. Ich bin damit einverstanden, dass der MATLAB-Compiler eine großartige Funktion ist, die nicht in R.
Richie Cotton
2
Oft sind R-Funktionen besser dokumentiert als in Matlab. Ich finde, dass die Qualität der Matlab-Dokumentation von Funktion zu Funktion und zwischen (kommerziellen) Toolboxen sehr unterschiedlich ist. Ich bin damit einverstanden, dass Matlab IDE etwas anfängerfreundlicher ist, aber es ist nicht besser als zB ESS für R, wenn Sie es täglich verwenden.
Matti Pastell
10
RStudio ist eine schöne neue R IDE
Jason Axelson
1
Schade, dass diese Frage geschlossen wurde. Dies ist eine der besten technischen Diskussionen, die ich je auf StackOverflow gesehen habe.
kd4ttc
32

R ist eine Umgebung für statistische Datenanalyse und Grafiken. MATLABs Ursprünge liegen in der numerischen Berechnung. Die grundlegenden Sprachimplementierungen haben viele Gemeinsamkeiten, wenn Sie sie zur Datenmanipulation verwenden (z. B. Matrix- / Vektoroperationen).

R verfügt über statistische Funktionen, die an anderer Stelle nur schwer zu finden sind (> 2000 CRAN- Pakete ), und viele Statistiker verwenden sie. Auf der anderen Seite hat MATLAB viele (teure) Toolboxen für technische Anwendungen wie

  • Bildverarbeitung / Bildaufnahme,
  • Filterdesign,
  • Fuzzy-Logik / Fuzzy-Steuerung,
  • partielle Differentialgleichungen,
  • etc.
rcs
quelle
R verfügt über ein großes Paket-Repository namens CRAN, das eine Fülle zusätzlicher Funktionen bietet (obwohl ich Ihrem allgemeinen Standpunkt zustimme). Beispiel: ein PDE-Löser: cran.r-project.org/web/packages/deSolve/index.html
Suppressingfire
7
MATLAB hat auch etwas Analoges zu CRAN: einen umfangreichen Dateiaustausch ( mathworks.com/matlabcentral/fileexchange ) mit über 10.000 vom Benutzer eingereichten Funktionen und Toolboxen, die frei verfügbar sind.
Gnovice
2
Außerhalb von File Exchange von MATLAB Central gibt es auch eine umfangreiche, kostenlose Codebasis für MATLAB.
Prädiktor
26

Ich habe sowohl R als auch MATLAB verwendet, um Probleme zu lösen und Modelle im Zusammenhang mit Umwelttechnik zu konstruieren, und es gibt viele Überschneidungen zwischen den beiden Systemen. Meiner Meinung nach liegen die Vorteile von MATLAB in speziellen domänenspezifischen Anwendungen. Einige Beispiele sind:

  • Funktionen wie Streamline, die bei Untersuchungen der Fluiddynamik helfen.

  • Toolboxen wie das Bildverarbeitungs-Toolset. Ich habe kein R-Paket gefunden, das eine äquivalente Implementierung von Tools wie dem Watershed-Algorithmus bietet.

Meiner Meinung nach bietet MATLAB weitaus bessere interaktive Grafikfunktionen. Ich denke jedoch, dass R je nach Anwendung Grafiken mit besserer statischer Druckqualität erzeugt. Die symbolische Mathematik-Toolbox von MATLAB ist außerdem besser integriert und leistungsfähiger als R-Äquivalente wie Ryacas oder rSymPy. Die Existenz des MATLAB-Compilers ermöglicht auch die Bereitstellung von Systemen, die auf MATLAB-Code basieren, unabhängig von der MATLAB-Umgebung - obwohl die Verfügbarkeit davon abhängt, wie viel Geld Sie herumwerfen müssen.

Eine andere Sache, die ich beachten sollte, ist, dass der MATLAB-Debugger einer der besten ist, mit denen ich gearbeitet habe.

Der Hauptvorteil, den ich bei R sehe, ist die Offenheit des Systems und die Leichtigkeit, mit der es erweitert werden kann. Dies hat zu einer unglaublichen Vielfalt an CRAN-Paketen geführt. Ich weiß, dass Mathworks auch ein Repository mit vom Benutzer bereitgestellten Toolboxen unterhält, und ich kann keinen fairen Vergleich anstellen, da ich es nicht so oft verwendet habe.

Die Offenheit von R erstreckt sich auch auf die Verknüpfung in kompiliertem Code. Vor einiger Zeit hatte ich ein Modell in Fortran geschrieben und versuchte mich zwischen R oder MATLAB als Frontend zu entscheiden, um Eingaben vorzubereiten und Ergebnisse zu verarbeiten. Ich habe eine Stunde lang über die MEX-Schnittstelle zum kompilierten Code gelesen. Als ich feststellte, dass ich eine separate Fortran-Routine schreiben und verwalten musste, die einige komplizierte Zeiger-Jonglierungen durchführte, um die Schnittstelle zu verwalten, stellte ich MATLAB ein.

Die R-Schnittstelle besteht aus dem Aufruf von .Fortran ([Name der Unterroutine], [Argumentliste]) und ist einfach schneller und sauberer.

Sharpie
quelle
11
Ich sollte auch erwähnen, dass R in meinem Buch ein großes Plus für das Sweave-System hat, um reproduzierbare Forschung zu ermöglichen. Meiner Meinung nach ist es äußerst wichtig, dass jeder die Berechnungen hinter einem Papier oder Bericht mit einem frei verfügbaren Tool erneut ausführen und analysieren kann.
Sharpie
22

Ein großer Vorteil von MATLAB gegenüber R ist die Qualität der MATLAB-Dokumentation. Als Open Source leidet R in dieser Hinsicht, ein Merkmal, das vielen Open Source-Projekten gemeinsam ist.

R ist jedoch eine sehr nützliche Umgebung und Sprache. Es ist in der Bioinformatik-Community weit verbreitet und verfügt über viele nützliche Pakete in diesem Bereich.

Eine Alternative zu R ist Octave ( http://www.gnu.org/software/octave/ ), das MATLAB sehr ähnlich ist und MATLAB-Skripte ausführen kann.

John
quelle
2
Alle von R eingereichten Pakete werden auf Dokumentation und Beispiele getestet.
Fernando
21

Nach meiner Erfahrung ist der Wechsel von MATLAB zu Python ein einfacher Übergang - Python mit numpy / scipy ist MATLAB in Bezug auf Stil und Funktionen näher als R. Es gibt auch Open-Source-Direkt-MATLAB-Klone Octave und Scilab .

Es gibt sicherlich viel, was MATLAB kann, was R nicht kann - in meinem Bereich wird MATLAB häufig für die Echtzeit-Datenerfassung verwendet - die meisten Hardware-Unternehmen bieten MATLAB-Schnittstellen an. Während dies mit RI möglich sein mag, stellen Sie sich vor, es wäre viel komplizierter. Außerdem bietet Simulink einen ganzen Funktionsbereich, der meiner Meinung nach in R fehlt. Ich bin sicher, dass es noch mehr gibt, aber ich bin mit R nicht so vertraut.

Robince
quelle
11

Kurze Antwort: Nein, natürlich nicht. Während sich jeder Satz mathematischer Softwarepakete überschneidet, haben sie immer Vorurteile gegenüber bestimmten Problembereichen. Diese Verzerrungen hängen stark davon ab, ob Sie eines dieser Pakete verwenden möchten oder nicht.

Ein Beispiel dafür, was MATLAB tun kann, was R nicht kann, ist die Schnittstelle zu Echtzeithardware zur Signalverarbeitung / -erfassung und -steuerung. Ein Simulink- Modell in MATLAB kann so konfiguriert werden, dass es in einer Simulation auf Ihrem Computer ausgeführt wird, bevor der Code für die Ausführung auf einem realen System kompiliert wird, wobei Messdaten als Eingabe verwendet und geeignete Ausgaben berechnet werden (was vor der Simulation eines Steuerungssystems war, ist jetzt voll funktionsfähig einer). Mit der entsprechenden Hardware-Karte in Ihrem Computer können Sie Echtzeit-Steuerungssysteme über einen PC ausführen.

Im Gegensatz dazu scheint R fest in der Rolle der Statistik verankert zu sein, wo es sicher besser ist als MATLAB. In ähnlicher Weise ist Mathematica in symbolischer Mathematik besser als MATLAB. Python ist bei der allgemeinen Programmierung besser als MATLAB. Gnuplot ist besser als alle anderen darin, tatsächlich Diagramme zu erstellen (ähm, ich nehme an); und so weiter.

Will Robertson
quelle
11
Es ist bekannt, dass R sehr gut zum Erstellen von Diagrammen geeignet ist. Sie sehen auch sehr gut aus. Der allererste Grund für mich, mich mit R zu befassen, war, dass ich neidisch auf einige der schönen Grafiken war, die meine Kollegen mit R erstellt hatten. Also wechselte ich von Gnuplot und habe nie zurückgeschaut.
Frank
11

Ich stimme vielen der oben gegebenen Antworten zu. Da die Antwort spezifisch für die verschiedenen MATLAB- und R-Funktionen ist, möchte ich eine sehr wichtige erwähnen: MATLAB enthält eine JVM und weist eine einwandfreie und robuste Interoperabilität mit Java auf. Das gesamte Java-Universum von Java ist für den MATLAB-Benutzer zugänglich. Die MATLAB IDE kann fast als Eclipse eines armen Mannes verwendet werden. Im Vergleich dazu ist rJava trotz der sehr wertvollen Bemühungen seines Schöpfers (Roman Francois) sehr unreif.

gappy
quelle
9

Wir können nicht, weil es von unseren Kunden erwartet / verlangt wird.

Nzbuu
quelle
3
Dies ist eine vollständig gültige Antwort. Es ist wichtig zu wissen, dass es viele Branchen gibt, die eine Open Source-Lösung einfach nicht akzeptieren. Es gibt fragwürdige Compliance-Anforderungen, die R der Platte annehmen.
Brandon Bertelsen
1
@BrandonBertelsen: Was genau?
smci
3
@smci diese Aussage ist nicht mehr so ​​wahr wie im Jahr 2010. Die Verwendung von R hat zugenommen.
Brandon Bertelsen
Ok, aber können Sie uns ab 2010 mitteilen, welche Compliance-Anforderungen R von der Platte genommen haben (und welche sind immer noch ein Problem)?
smci
1
Unsere Kunden verwenden in der Regel auch MATLAB und wir müssen häufig Code und Modelle mit ihnen austauschen. Sie stellen im Allgemeinen fest, dass die einzigen Branchen, die R verwenden, sich hauptsächlich mit Datensätzen und Statistiken befassen.
Nzbuu
5

Mit dem sqldf-Paket kann R nicht nur Statistiken erstellen, sondern auch ernsthaftes Data Mining - vorausgesetzt, auf Ihrem Computer befindet sich genügend RAM.

Und mit dem RServe-Paket wird R zu einem regulären TCP / IP-Server. So können Sie R aus Java (oder einer anderen Sprache, wenn Sie die API haben) aufrufen. Es gibt auch ein Paket in R, um Java oder R aufzurufen.

Alex
quelle
Es ist wahr, aber die Frage ist "Was kann MATLAB tun, was R nicht kann?" nicht "Was kann R, was MATLAB nicht kann?".
Marek
4

Als Benutzer von MATLAB und R denke ich, dass es sich um sehr unterschiedliche Anwendungen handelt. Ich selbst habe einen Hintergrund in Informatik usw. und ich kann mir nicht helfen zu denken, dass R von Statistikern für Statistiker stammt, während MATLAB von Programmierern für Programmierer stammt.

R macht es sehr einfach, alle möglichen statistischen Daten zu visualisieren und zu berechnen, aber ich würde es nicht verwenden, um etwas Signalverarbeitungsbezogenes zu implementieren, wenn es nach mir ginge.

Um zusammenzufassen, wenn Sie Statistiken erstellen möchten, verwenden Sie R. Wenn Sie programmieren möchten, verwenden Sie MATLAB oder eine Programmiersprache.

lhahne
quelle
4
Komm eins, Rist eine Programmiersprache.
Frank
6
"Matlab ist von Programmierern für Programmierer". MATLAB wurde ursprünglich speziell für die lineare Algebra geschrieben. Es war keine universelle Programmiersprache. Viele der allgemeinen Sprachfunktionen wurden später behandelt. (Es gab nur ein funktionsfähiges objektorientiertes System für ein Jahr.)
Richie Cotton
9
"Matlab ist von Programmierern für Programmierer": Ist das dein Ernst? Das einzige, was mich an MATLAB wirklich stört, ist, dass derjenige, der die Sprache erfunden hat, kein Programmierer war, da die Sprache in einigen Situationen äußerst umständlich ist.
Hannes Ovrén
13
R wurde von Statistikern erstellt, Matlab wurde von Ingenieuren erstellt. Beide sind voll funktionsfähige Programmiersprachen.
Sharpie
3
@smci Das letzte Mal, dass ich Matlab-Produktionscode gegen R-Code ausgetauscht habe, war 2008 beim Nationalen Wetterdienst und das System läuft seitdem fehlerfrei. Die In-Core-Verarbeitung von Multi-Gigabyte-Datensätzen mit rekursiven Algorithmen ist keineswegs eine Aufgabe, die für das gesamte wissenschaftliche Rechnen repräsentativ ist, und ist daher eine schlechte Wahl für Benchmarks, um allgemeine Aussagen über die Eignung einer Programmiersprache zu treffen.
Sharpie
2

Die Unterstützung für interaktive Grafiken ist in Matlab viel besser als in R. Ich hasse Matlab als Sprache, aber ich werde eifersüchtig, wenn ich sehe, wie Benutzer Daten mit Mausoperationen untersuchen können, während ich damit beschäftigt bin, Befehle mit neuen Werten für xlimusw. zu wiederholen . Matlab verarbeitet auch Multi-Panel-Plots viel besser als jede der R-Methoden für die Aufgabe. Im Allgemeinen wirkt R-Grafik wie in den 1960er Jahren. Es ist in Ordnung für die Veröffentlichung, aber nicht die beste Lösung für die interaktive Untersuchung von Daten.

danke
quelle
Als starker Benutzer der interaktiven Plot-Tools beider Systeme stimme ich den Grenzen zu (dh ich drücke beide stark), aber Sie verpassen wahrscheinlich einige sehr nützliche interaktive Grafik-Tools in R. Schauen Sie sich die folgenden Pakete an : iplots, Acinonyx, Rstudios Manipulation und mehr. Schauen Sie sich zum Spaß dieses Beispiel an .
Iterator
"R-Grafik hat das Gefühl der 1960er Jahre" - das mag schon vor Jahren so gewesen sein. Heutzutage sehen R-Charts mit ggplot2, das immer beliebter wird, modern und schön aus. Siehe zum Beispiel: r-bloggers.com/?s=ggplot
Arielf