Ich möchte die MATLAB-Programmierung erlernen, damit ich einige Recherchen / Analysen selbst durchführen und auch einige MATLAB-Skripte studieren / modifizieren kann, die ich online gefunden habe usw.
Das Problem ist jedoch, dass ich mir MATLAB nicht leisten kann. Wie ich gehört habe, ist GNU Octave durchaus MATLAB-kompatibel. Die Herausforderung bei Octave ist jedoch, dass die Dokumentation sehr spärlich ist.
So ist MATLAB einerseits unerschwinglich teuer (-ve), hat aber viele gute Dokumentationen, Tutorials und Skripte online (+), während Octave kostenlos ist (wie bei Bier), obwohl es (verständlicherweise) keine umfassende Dokumentation etc .
Ich denke darüber nach, Octave herunterzuladen und zu installieren, verwende aber MATLAB-Dokumentation (und Skripte), um mich in Bewegung zu setzen. Ich bin mir bewusst, dass es einige Unterschiede zwischen Octave und MATLAB gibt - ich versuche herauszufinden, ob die Unterschiede groß genug sind, um meine Bemühungen zum (effektiven) Erlernen von MATLAB mit Octave zu vereiteln.
Jede konstruktive Rückmeldung ist willkommen.
Antworten:
Haftungsausschluss: Ich ärgere mich manchmal, wenn jemand versucht, mir zu sagen, was er zu tun glaubt, anstatt die von mir gestellte Frage zu beantworten. Aber ich gehe ein Risiko ein und schlage Ihnen eine Alternative vor.
Ich würde vorschlagen, sich Pythons wissenschaftliche Computerpakete anzusehen : numpy , matplotlib und scipy . Zusammen bieten sie Ihnen den größten Teil der Kernfunktionalität von MATLAB (in einigen Fällen bieten sie Ihnen mehr als MATLAB). Sie sind kostenlos und Open Source und haben heutzutage möglicherweise eine größere Anwenderbasis als Octave. Ein Großteil der wissenschaftlichen Computerinfrastruktur in Python wird von Enthought Inc. unterstützt , und ich würde empfehlen, dass Sie die kostenlose Enthought Python Distribution installieren , die alle drei genannten Pakete und mehr enthält.
Natürlich gibt es Features von MATLAB (insbesondere in den Toolboxen, aber Octave hat keine), die Python fehlen. Aber ich benutze Python für den größten Teil meiner Arbeit in Kombination mit untergeordneten Sprachen, und es ermöglicht mir, in einer Sprache zu programmieren, die fast so praktisch ist wie MATLAB, mit einer Vielzahl nützlicher Pakete zu kommunizieren, die MATLAB nicht hat, und das Programm auszuführen der gleiche einfach zu lesende Code auf einem Supercomputer.
Bearbeiten : Möglicherweise möchten Sie auch die Anaconda Python-Distribution von Continuum Analytics testen. Es gibt eine kostenlose Version, die alle oben genannten Pakete und vieles mehr enthält.
quelle
GNU Octave ist "hauptsächlich mit Matlab kompatibel". Bestimmte Feinheiten bedeuten, dass nicht alle Skripte von MATLAB nach Octave portierbar sind.
Es lohnt sich, die Dokumentation für die Sprache und / oder Kompatibilitätshinweise in den FAQs oder auf Wikibooks zu lesen . Es gibt auch Portierungshinweise .
Es gibt Pakete , die MATLAB-Toolboxen ähneln, aber Sie müssen sie überprüfen, um herauszufinden, wie ähnlich sie sind. Es gibt auch Versuche, Konvertierungsskripte zu erstellen, die die Unterschiede zwischen den beiden Sprachen berücksichtigen, aber meines Wissens sind keine perfekt.
quelle
Ja, Sie können MATLAB über Octave lernen. Die Octave-Syntax ist jedoch weniger restriktiv und entspricht mehr den modernen Skriptsprachen. MATLAB scheint in dieser Hinsicht im Rückstand zu sein. Siehe diesen Wiki-Link MATLAB-Programmierung / Unterschiede zwischen Octave und MATLAB
Ein weiterer wesentlicher Unterschied für mich war die Verfügbarkeit bestimmter Bibliotheken für MATLAB, jedoch nicht für Octave.
quelle
Für das allgemeine Erlernen der M-Sprache und der Funktionsweise von MATLAB ist Octave in Ordnung. Wenn Sie jedoch eine bestimmte Toolbox für Ihre Arbeit benötigen und niemand eine kostenlose Version davon implementiert hat, haben Sie Pech.
Eine Student Edition von MATLAB ist nicht so teuer. Wenn Sie an einer Universität sind, ist es sogar möglich, dass sie eine Standortlizenz haben. Sie sollten beide Möglichkeiten prüfen.
quelle
Ich habe Octave und MATLAB in der Vergangenheit synonym für dieselben Codeteile verwendet. Ich hatte keine Probleme mit der Kompatibilität. Die Hauptunterschiede, soweit ich das beurteilen kann, sind:
#
oder%
für Kommentare verwenden, Matlab verwendet nur%
quelle
Dies ist in der Tat möglich, insbesondere wenn Sie eine GUI wie GUIOctave verwenden . Eine andere Sprache, die Sie vielleicht nützlich finden, weil viele Pakete dafür geschrieben wurden, ist R. Es gibt auch eine GUI für die R-Sprache namens RStudio und ein Übersetzungsdokument zwischen R und MatLab .
quelle
Zu Ihrer Frage:
Ich würde ja sagen. Einfach, weil die Paradigmen und Prinzipien gleich sind. Die Unterschiede in der Syntax sind vernachlässigbar und können in einem Spickzettel zusammengefasst werden (falls Sie eines Tages hauptsächlich mit MATLAB arbeiten).
Ein weiterer Vorschlag für eine Alternative:
Als MATLAB-Alternative verwende ich SciLab . Es ist kostenlos wie Octave, hat eine anständige Community, die Hilfe und Support bietet, und die Dokumentation ist ziemlich gut. Die eingebaute Dokumentation und Hilfe für Funktionen ähnelt der von MATLAB. (Was mir am besten gefällt, ist die Möglichkeit, die Beispiele mit einem Klick auszuführen). Die Syntax ist ähnlich wie bei MATLAB.
In Bezug auf die Ähnlichkeiten und Unterschiede zwischen SciLab und MATLAB könnte dieses Dokument für Sie von Interesse sein: Eine Einführung in Scilab aus der Sicht eines Matlab-Benutzers, Eike Rietsch, Mai 2010 (PDF) .
Ein weiteres Plus für SciLab gegenüber MATLAB: Start und GUI sind viel schneller. Ich habe Octave noch nicht ausprobiert.
quelle
Praktisches Beispiel:
Ich benutze MATLAB bei der Arbeit und habe im letzten Semester an Stanfords kostenlosem Online-Kurs für maschinelles Lernen teilgenommen.
Ich habe alle Hausaufgaben in der Oktave gemacht.
Ich habe nur 2 Unterschiede bemerkt (ich habe nur die Kernfunktionalität verwendet):
quelle
In Octaves Interpretation der Programmiersprache MATLAB gibt es einige subtile Unterschiede. Octave verwendet „
endif
“ und „endwhile
“ zu schließenif
undwhile
Aussagen sind. Mit Octave können Sie auch Funktionen in der Befehlszeile deklarieren. Es sollte jedoch alles analysieren, was MATLAB auch analysiert. Wenn Sie sich also an die Programmiersprache von MATLAB halten, sollten Sie in Ordnung sein.Beachten Sie, dass der größte Unterschied zwischen den beiden Programmen in den integrierten Funktionen besteht, die den größten Teil der numerischen Schwerstarbeit leisten, z. B. "
quad
", "ode15s
" und so weiter. Alle diese Funktionen sollten jedoch mit demhelp
Befehl " " gut dokumentiert sein . Es gibt auch Mailinglisten für Octave, falls Sie spezifischere Fragen haben, die nicht in der Online-Hilfe behandelt werden.quelle
Ja, das kannst du absolut, das habe ich getan. Ein Großteil der Leistung von MATLAB kommt jedoch mit einigen seiner äußerst benutzerfreundlichen Toolboxen und integrierten Funktionen, die möglicherweise mit Octave vergleichbar sind oder nicht.
Beachten Sie auch, dass die Basissprachen selbst zwar kompatibel sind (mit Ausnahme der neuen OO-Funktionen in MATLAB), Octave jedoch einige 'Ergänzungen' in der Syntax enthält, beispielsweise die Verwendung von "! =" Für NEQ und einige Alternative Standardverhaltensweisen wie das Parsen von Inline-Funktionen. Dies sind Kleinigkeiten, die dazu führen, dass Octave-Code nicht von Anfang an in MATLAB ausgeführt wird, es sei denn, Sie haben darauf geachtet, dass Sie sich nicht auf dieses Verhalten verlassen.
Außerdem ist MATLAB eine vollständige Computerumgebung und nicht nur eine Sprache, die mit optimierten linearen Algebra-Routinen zusammenarbeitet. Was Sie also aus Octave lernen, wird nur so weit gehen. Sie werden in MATLAB funktionsfähig sein, wenn Sie sich mit Octave auskennen, aber Sie werden mit MATLAB nicht so produktiv sein, wie Sie könnten.
quelle
Die beste freie Sprache mit MATLAB-ähnlicher Syntax ist Julia. Es ist auch schneller und hat ein umfangreicheres Paketsystem (unter anderem, warum es besser ist ...), aber die lineare Algebra-Syntax ist fast genau gleich (viele Algorithmen können Sie in MATLAB übersetzen, indem Sie sie
A[i]
für die Indizierung in ändernA(i)
). Ich glaube, es ist die beste Sprache, die man derzeit lernen kann, und Sie werden MATLAB "aus Versehen kennen", wenn Sie es nur verwenden.quelle
Ja, Sie können Matlab mit Octave lernen. Natürlich gibt es einige Einschränkungen.
Octave und Matlab teilen einen Großteil ihrer Syntax. Die beiden sind in dieser Hinsicht austauschbar. Die Erfahrung in Matlab ist umfangreicher und benutzerfreundlicher, insbesondere bei der Arbeit mit Grafiken, obwohl Octave über eine neue grafische Benutzeroberfläche (GUI) verfügt, die sich in der Beta-Phase befindet. Die beiden Systeme werden sich wahrscheinlich weiter annähern, wenn sich die grafische Umgebung für Octave verbessert.
Es gibt viele kostenlose Kurse auf Coursera, die Ihnen eine kostenlose temporäre Matlab-Studentenlizenz für die Dauer des Kurses geben. Suchen Sie nach maschinellen Lernkursen.
quelle