Ist es möglich, mit Octave MATLAB-Programmierung zu lernen?

23

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.

Homunculus Reticulli
quelle
3
Willkommen, Homunculus. Wir sind weniger als zwei Monate alt und haben noch nicht viele Tags. Ich habe das Oktav-Tag für Sie hinzugefügt.
David Ketcheson
Eine andere Option, wenn Sie nur eine Computersoftware für Ihren persönlichen Gebrauch verwenden möchten, ist Mathematica. Die vollständige Version ist für den persönlichen Gebrauch für weniger als 300 US-Dollar erhältlich. Ich weiß nicht, ob dies in Ihrem Budget liegt oder nicht. Aber für das, was man dafür bekommt (gleiche Version wie die kommerzielle Vollversion), lohnt es sich, denke ich. Hinweis: Wenn Sie Student sind, stehen Matlab und Mathematica auch für Studenten zum ungefähr gleichen Preis zur Verfügung.
Nasser
1
Mit einem Wort, ja. Die Unterschiede zwischen den Sprachen sind ziemlich gering. Die Matlab-Dokumentation ist kostenlos im Internet unter Mathworks.com (Hersteller von Matlab) erhältlich. Die Hauptsache, die Sie vermissen werden, ist Matlabs GUI. Eine gute GUI für Octave ist schwer zu finden. Die Entwicklungsversion von Octave verfügt über eine grafische Benutzeroberfläche, ist jedoch schwierig zu installieren. Ich habe QtOctave installiert, das ich unter outsch.org/2011/01/29/qtoctave-0-10-1-for-windows bekommen habe . Es funktioniert einwandfrei, außer dass beim Start immer eine Fehlermeldung angezeigt wird und ich einen Prozess nicht beenden kann, ohne Octave vollständig zu beenden. Ich benutze Notepad ++ ...
Stefan Smith
... anstelle von QtOctaves Editor, und es scheint besser zu funktionieren. Eine andere Sache ist, dass die Unterschiede zwischen Octave und Matlab, wie sie sind, auf kostenlosen Websites ausführlich dokumentiert sind.
Stefan Smith
Da ich nicht genug Reputation habe, um zu kommentieren, möchte ich hinzufügen, dass eine Aussage in der akzeptierten Antwort: "Natürlich gibt es Funktionen von MATLAB (insbesondere in den Toolboxen, aber Octave hat diese nicht)" vollständig ist falsch. Octave hat bei Octave-forge eine Reihe von Paketen, die alle Paketfunktionen von Matlab enthalten, die ich jemals benötigt habe (ich arbeite in der Bildverarbeitung und -optimierung für medizinische Bilder und benötige eine ganze Reihe von Toolboxen / Paketen). Auch dann , wenn die akzeptierte Antwort nicht ein wichtiges Thema ansprechen, das ist , dass kein Code die Fragesteller schreiben von Labor oder indivi verwendbar ist
barnhillec

Antworten:

24

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.

David Ketcheson
quelle
7
Es hängt davon ab, ob Homunculus MATLAB lernen möchte, weil er MATLAB speziell lernen muss (zum Beispiel für einen Job), oder MATLAB lernen möchte, um wissenschaftliches Rechnen zu betreiben. In diesem Fall ist Python möglicherweise die bessere Wahl, wenn es um finanzielle Engpässe geht.
Geoff Oxberry
3
@ DavidKetcheson: Ich benutze tatsächlich Numpy und Matplotlib (da ich mit Python vertraut bin). Da ich jedoch immer wieder auf eine Menge MATLAB-Code stoße, möchte ich gerne von den verfügbaren MATLAB-Skripten usw. lernen (ohne die Lizenzgebühr bezahlen zu müssen). Außerdem ist es immer gut, MATLAB-Programmierung als zusätzliche Feder in der Kappe zu haben - deshalb habe ich darüber nachgedacht, MATLAB über die Hintertür (mit Octave) zu lernen.
Homunculus Reticulli
+1 für Python hier, es ist auch eine echte Programmiersprache :) Obwohl ich sagen sollte, dass ich angefangen habe, MATLAB zu lernen.
Boyfarrell
Octave ist ein Matlab-Klon mit freier Lizenz. Die Sprachsyntax ist nahezu vollständig kompatibel. Python löst ein ganz anderes Problem als Matlab und Octave. Die Syntax ist viel komplizierter und ausführlicher, da die Sprache vielseitiger ist. Für die Prototyperstellung von linearen Systemen würden Sie Matlab oder Octave verwenden, und für die Implementierung von produktionsfähiger Software würden Sie auf Python / Java migrieren. Bevor Sie von Matlab zu Python oder R wechseln, sollten Sie verstehen, worauf Sie sich einlassen.
FistOfFury
@FistOfFury Ich benutze reines Python3 für lineare Systeme. Für produktionsbereite Software wählen Sie normalerweise entweder C / Fortran oder Embedded.
Percusse
17

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.

Gareth A. Lloyd
quelle
12

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.

Lehrlingswarteschlange
quelle
9

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.

Bill Barth
quelle
7

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:

  1. MATLAB kann bytekompiliert werden und ist etwas schneller.
  2. Octave kann entweder #oder %für Kommentare verwenden, Matlab verwendet nur%
  3. Octave erzeugt viel bessere Handlungen.
Dan
quelle
1
Es würde mich interessieren zu hören, in welcher Hinsicht Octave viel bessere Plots produziert (nicht, dass ich die MATLAB-Plots besonders mag ...).
Dirk
Octave verwendet Gnuplot als Backend. Es könnte nur sein, dass ich den Gnuplot mehr mag. Das Einzige, woran ich denken kann, ist, dass ich nichts Besonderes tun muss, um Antialiasing zu erhalten. Es ist automatisch aktiviert.
Dan
1
Meine Erfahrung mit dem Zeichnen von Oktaven ist gemischt, und nachdem ich ein oder zwei Dinge mit MATLAB gelernt habe, ist die Qualität der Grafiken, die ich daraus erhalte, jetzt sehr gut. Vielleicht haben Sie einige Beispiele, in denen Octave Matab übertrifft? Aso, bytekompiliert? Sprechen Sie über den MATLAB-Codierer? Sie können nicht einfach beliebigen MATLAB-Code in dieses Tool eingeben, und wenn ich mich recht erinnere, handelt es sich auch um ein ziemlich teures Tool, das mit Sicherheit nicht in einer für Studenten lizenzierten Version verfügbar ist.
Reid.Atcheson
Hoppla, ich verstehe, was du für die Zusammenstellung meinst. Mein Fehler.
Reid.Atcheson
Es tut mir leid, aber was bedeutet es, dass Matlab bytekompiliert werden kann?
user17915
6

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 .

Jean-Victor Côté
quelle
5

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.

Torbjörn
quelle
1
Ich bin kein Fan von Scilab, mein erster Eindruck war, dass es viele kleine Unterschiede in der Syntax und den Grundfunktionen gab (im Vergleich zu Matlab), aber keine der erstaunlichen , die Python für die Inkompatibilität ausgleichen muss.
Mdaoust
Hm ... laut Ihrem Kommentar und der Antwort von David Ketcheson scheint es sich wirklich zu lohnen, Python auszuprobieren.
Torbjörn
5

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):

  • Octave ist etwas flexibler in Bezug darauf, welche Arten von Ausdrücken indiziert werden können. Wenn Sie dies nutzen, wird Ihr Code nicht portierbar sein.
  • In meiner Installation funktionieren die Darstellungen pcolor () und image () nicht für Arrays mit einer angemessenen Größe wie 1000 x 1000, kleine Arrays wie 50 x 50.
mdaoust
quelle
5

In Octaves Interpretation der Programmiersprache MATLAB gibt es einige subtile Unterschiede. Octave verwendet „ endif“ und „ endwhile“ zu schließen ifund whileAussagen 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 dem helpBefehl " " gut dokumentiert sein . Es gibt auch Mailinglisten für Octave, falls Sie spezifischere Fragen haben, die nicht in der Online-Hilfe behandelt werden.

Pedro
quelle
3
Octave akzeptiert gerne "end" für das Ende von sowohl while-Schleifen als auch if-Anweisungen.
Bill Barth
4

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.

Reid. Atcheson
quelle
2

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 ändern A(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.

Chris Rackauckas
quelle
0

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.

Faust der Wut
quelle