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?
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?
Antworten:
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.
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).
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
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.
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.
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.
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.
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.
Wir können nicht, weil es von unseren Kunden erwartet / verlangt wird.
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.
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.
R
ist eine Programmiersprache.
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 xlim
usw. 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.