Unterschiede zwischen Octave und MATLAB? [geschlossen]


271

Ich bin ein Programmierer, der Python, Ruby und einige C kennt, die versuchen zu entscheiden, ob sie GNU Octave oder Matlab lernen wollen. Ich weiß, dass sie viel gemeinsam haben , aber mir ist nicht klar, wie ähnlich die Syntax oder sogar die Datenstrukturen sind. Jeder sagt, dass sie "ähnlich" sind, aber niemand sagt, wie ähnlich sie tatsächlich sind. Der obige Link zeigt einige Beispiele, bei denen sie syntaktisch ähnlich oder identisch sind. Gilt dies für die gesamte Sprache?

Ich versuche, die Sprache im Allgemeinen zu lernen, um mehr wissenschaftliches Rechnen zu betreiben, möglicherweise unter Verwendung einiger Bildanalysebibliotheken. Ich weiß, dass es viele andere Sprachen gibt, in denen ich programmieren könnte, aber meine Berater sagen, dass die Kenntnis von MATLAB oder Octave in den Wissenschaften von entscheidender Bedeutung ist.

Ist Matlab außerdem die Kosten wert? Ich habe nicht viel Geld, aber wenn es wichtige Unterschiede in den Bibliotheken oder anderswo gibt, bin ich sicher, dass ich das Geld finden könnte.


8
Da Sie ein Schüler sind, lohnt es sich zu prüfen, ob Ihre Schule den Schülern kostenlos / günstig Matlab zur Verfügung stellt. Das tun sowohl meine Grund- als auch meine Grundschule, was es etwas einfacher macht, sich für Matlab zu entscheiden.
Dougal

22
Ja, aber wenn er die Universität verlässt und zu einem Forschungszentrum geht, muss er es kaufen und kennt bis dahin nur Matlab und keine Alternativen. Wenn Sie also langfristig denken und eine Karriere in der Wissenschaft machen wollen, die er zu wollen scheint, sollten Sie dies nicht ignorieren. Ganz zu schweigen davon, dass solche Lizenzen normalerweise auch nicht für Cluster verwendet werden können.
Carandraug

2
Während Ihres Studiums sollten Sie in der Lage sein, eine Matlab-Lizenz für etwa 100 Dollar (USD) zu erhalten. Zugegeben, wenn Sie einige der anderen Toolboxen möchten, werden zusätzlich 29 USD pro Toolbox berechnet. Wenn Sie also nicht wissen, welche Toolboxen Sie möchten / benötigen, ist es schwierig, die Kosten zu rechtfertigen.
Ben A.

22
+1 Ich habe heute gerade angefangen, Octave zu lernen, weil ich gerade maschinelles Lernen lerne und der Lehrer empfohlen hat, Octave zu lernen (weil es kostenlos ist, weil METLAB teuer ist und weil der Schüler viel produktiver sein wird, wenn der maschinelle Algorithmus funktioniert zuerst entweder Octave oder METLAB verwenden, dann einmal funktionieren, dann entweder zu Java oder C ++ wechseln)
Anthony

7
Ich würde Ihnen raten, Python + OpenCV
Gukoff

Antworten:


235

Anstatt Ihnen eine vollständige Liste der Unterschiede zur Verfügung zu stellen, gebe ich Ihnen meine Meinung zu dieser Angelegenheit.

Wenn Sie die von Ihnen bereitgestellte Wiki-Seite sorgfältig lesen, werden Sie häufig Sätze wie "Octave unterstützt beide, während MATLAB das erste benötigt" usw. sehen. Dies zeigt, dass die Entwickler von Octave versuchen, die Octave-Syntax der von MATLAB "überlegen" zu machen.

Diese Einstellung lässt Octave seinen Zweck vollständig verlieren. Die Idee hinter Octave ist (oder ist , wie ich sagen sollte, siehe Kommentare unten), eine Open-Source-Alternative zum Ausführen von M-Code zu haben. Wenn es versucht, "besser" zu sein, versucht es daher, anders zu sein , was nicht mit den Gründen übereinstimmt, aus denen die meisten Leute es benutzen. Nach meiner Erfahrung funktioniert das Ausführen von in MATLAB entwickelten Dingen nie auf einmal, außer den wirklich einfachen, wirklich kurzen Dingen. Für jede größere Funktion muss ich immer viele Dinge übersetzen, bevor es in Octave funktioniert, wenn nicht von Grund auf neu schreiben. Wie das besser ist , sehe ich wirklich nicht ...

Wenn Sie Octave lernen, ist in Octave eine Menge Syntax zulässig, die in MATLAB nicht zulässig ist. Bedeutung - In Octave geschriebener Code funktioniert in MATLAB häufig nicht ohne zahlreiche Konvertierungen. Es ist auch nicht umgekehrt kompatibel!

Ich könnte weitermachen: Das MathWorks hat viele Toolboxen für MATLAB, es gibt Simulink und die dazugehörigen Produkte, für die es in Octave wirklich kein Äquivalent gibt (ja, dafür müssten Sie bezahlen. Aber oft macht Ihr Arbeitgeber / Ihre Schule das trotzdem und nun, es existiert zumindest ), nachgewiesene Einhaltung mehrerer Industriestandards, Testtools, Validierungstools, Anforderungsmanagementsysteme, Berichterstellung, eine viel größere Community- und Benutzerbasis usw. usw. usw. MATLAB ist nur ein kleiner Teil von etwas viel Größerem. Oktave ist ... nur Oktave.

Also mein Rat:

  • Finden Sie heraus, ob Ihre Schule für MATLAB bezahlt. Oft werden sie.
  • Wenn dies nicht der Fall ist und Sie das Geld zusammenkratzen können, kaufen Sie MATLAB und lernen Sie, es richtig zu verwenden. Auf lange Sicht ist es die bessere Entscheidung.
  • Wenn Sie das Geld wirklich nicht bekommen können, verwenden Sie Octave, lernen Sie jedoch die MATLAB-Syntax und halten Sie sich von der Nur-Octave-Syntax fern. (siehe Anmerkung)

Warum dieser letzte Punkt? Denn in den Wissenschaften gibt es oft große Codebasen, die vollständig in MATLAB geschrieben sind. Es gibt Professoren, Ingenieure, Studenten, professionelle Programmierer, viele, viele Leute, die alle komplizierten Details von MATLAB kennen und nicht so sehr von Octave.

Wenn Sie einen neuen Job bekommen und jeder in Ihrem neuen Büro Spanisch spricht, ist es etwas übermütig, von jedem zu verlangen, dass er von nun an Englisch spricht , einfach weil Sie kein Spanisch sprechen / mögen. Gleiches gilt für MATLAB und Octave.

NB - wenn alle Downvoter nur einen Kommentar mit ihren Argumenten und Gründen für die Nichtübereinstimmung mit mir hinterlassen könnten, wäre das großartig :)

Hinweis: Octave kann im "traditionellen Modus" ausgeführt werden (indem beim Starten von Octave das Flag --traditional eingefügt wird), wodurch ein Fehler auftritt, wenn bestimmte Nur-Octave-Syntax verwendet wird.


25
Über das Fehlen von JIT wurde es bereits in der Entwicklungsversion von Octave implementiert. Ich weiß nicht, wann das veröffentlicht wird, aber ich habe es erstellt und der Unterschied für Loop-Code ist enorm. Und um sich von der Octave-Syntax fernzuhalten, gibt es die --traditionelle Option von Octave. Ich sage nicht, dass Matlab-Code immer in Octave ausgeführt wird, aber dies wird mit jeder Version viel besser und Kompatibilität ist eine ihrer Prioritäten (ganz zu schweigen davon, dass selbst verschiedene Matlab-Versionen genügend Inkompatibilitäten aufweisen).
Carandraug

14
Und was Sie nennen, ist das Festhalten an einer überlegenen Syntax ... Wenn Sie die Freiheit hätten, Matlab zu ändern, zusätzliche Syntax oder andere Funktionen hinzuzufügen, nicht wahr? Dies sind Funktionen, die Benutzer implementiert haben und die die Kompatibilität nicht beeinträchtigen. Meistens werden neue Dinge aus diesem Grund abgelehnt. Die Idee ist, dass die Matlab-Sprache eine Teilmenge der Octave-Sprache ist. Wenn Sie der Meinung sind, dass die Idee großartig ist, sollten Sie beitreten, da es sich um ein Community-Projekt handelt und über die Funktionen verfügt, die die Community entwickelt.
Carandraug

19
@RodyOldenhuis es soll kein Klon sein. Octave Entwicklung nicht auf diese Weise beginnen, es wurde nur immer mehr gedrängt in diese Richtung durch die Benutzer , die halten die Einreichung Patches für sie sciencedirect.com/science/article/pii/S0959152412000911
carandraug

9
Wurde der Hersteller eines Programmiertools jemals erfolgreich für einen Fehler verantwortlich gemacht?
Martin Beckett

6
@carandraug: ah zur Hölle damit. Korrektheit ist wichtiger als all das :)
Rody Oldenhuis

78

Ein vollständigerer Link zur Liste der Unterschiede finden Sie in den FAQ der Oktave . Theoretisch sollte der gesamte Code, der in Matlab ausgeführt wird, in Octave ausgeführt werden, und Octave-Entwickler behandeln Inkompatibilität mit Matlab als Fehler. Die Antwort auf Ihre erste Frage lautet also theoretisch Ja. Natürlich hat jede Software Fehler, weder Octave noch Matlab (ja, auch Matlab) sind vor ihnen sicher. Sie können sie melden und jemand wird versuchen, sie zu beheben

Octave hat auch zusätzliche Funktionen , die meisten davon sind zusätzliche Syntax, die meiner Meinung nach den Code lesbarer und sinnvoller machen, insbesondere wenn Sie an andere Programmiersprachen gewöhnt sind.

Aber Octave bietet mehr als nur die Geldkosten. Octave ist auch im Sinne von Freiheit kostenlos, es ist libre, aber ich denke nicht, dass dies der Ort ist, an dem man über Softwarefreiheit schimpfen kann.

Ich verarbeite Bilder nur in Octave und stelle fest, dass das Bildpaket meinen Anforderungen entspricht. Ich weiß jedoch nicht, was Ihnen gehören wird. Meine Antwort darauf, ob sich die Kosten lohnen, lautet Nein, aber sicherlich werden andere anderer Meinung sein.


23

MATLAB ist in erster Linie ein kommerzielles Angebot. Daher funktioniert alles in MATLAB ziemlich sofort. Alle Kernfunktionen sind solide, und wenn Sie an einem speziellen Projekt arbeiten, verfügt MATLAB wahrscheinlich über ein Add-On, das Sie verkaufen können und das Ihnen viele zusätzliche domänenspezifische .m-Dateien hinzufügt. Es ist nicht billig, aber es funktioniert und es wird die Arbeit ohne Beanstandung erledigen.

Octave zeigt immer seine Open-Source-Wurzeln, die frei von Informationen sein sollen. Es ist kostenlos und wird Sie daran erinnern, dass es bei jeder Gelegenheit kostenlos ist. Es wurde von Freiwilligen entwickelt, die Windows aus Leidenschaft hassen. Deshalb läuft Octave widerwillig unter Windows. Es ist ziemlich überraschend, dass es so viele MATLAB-Funktionen gibt wie sie.

Aber hier ist das Problem. Jedes Mal, wenn Sie versuchen, etwas mehr als trivial Komplexes zu tun, bricht Octave plötzlich auf subtile und schwer verständliche Weise. Hoppla - der Terminaltreiber hatte irgendwo tief in der OpenGL-Schicht einen Überlauf. Sie können nicht drucken. Ups - die Figurenplots machen seltsame Dinge mit ihren Schriften. Viel Glück beim Herausfinden warum. Hoppla - es gibt eine versteckte Abhängigkeit zwischen Octave und einer anderen obskuren freien Software, sodass sie nicht kompiliert werden kann. Viel Glück beim Herausfinden, was es ist.

Und die Oktavantwort ist hey! Es ist freie Software! Sie haben den gesamten Quellcode, Sie können alle diese Fehler selbst beheben! Wenn ich unendlich viel Zeit und Ressourcen zur Verfügung hätte, könnte ich vielleicht meine ganze Zeit damit verbringen, Fehler in freier Software zu beheben, aber ich persönlich nicht. Wenn ich in der Wissenschaft arbeiten würde, könnte ich.

Im Kern kommt es also auf eine Frage an, ob man sich für MATLAB oder Octave entscheidet. Interessanterweise ist diese Frage immer dieselbe, wenn zwischen kommerziellen und freien Softwarevarianten gewählt wird.

Und die Frage ist:

Hast du mehr Geld als Zeit?


2
Eine andere Frage ist: Was nutzen Unternehmen, in denen Sie möglicherweise arbeiten? Wahrscheinlich Matlab aus den gleichen Gründen.
user276648

14

Octave ist im Grunde eine Open Source-Version von MATLAB. Es wurde geschrieben, um genau das zu sein. MATLAB hat eine sehr schöne GUI, die die Verwendung etwas vereinfacht, aber die nächste stabile Version von OCTAVE wird auch eine GUI haben, die ich in der instabilen Version getestet habe und die fantastisch aussieht. Octave ist viel fehlerhafter, weil es von einer Gruppe von Freiwilligen entwickelt und gewartet wurde, wobei die Entwicklung von MATLAB von der Industrie mit Millionen von Dollar finanziert wird. Ich bin noch Student und verwende eine Studentenversion von MATLAB, aber ich denke darüber nach, zu Octave zu wechseln, sobald die stabile Version mit der GUI veröffentlicht ist.

MATLAB ist wahrscheinlich viel leistungsfähiger als Octave und die Algorithmen laufen schneller, aber für die meisten Anwendungen ist Octave mehr als ausreichend und meiner Meinung nach ein erstaunliches Tool, das völlig kostenlos ist, wobei Octave völlig kostenlos ist.

Ich würde sagen, verwenden Sie MATLAB, während Sie die akademische Version verwenden können, aber der Wechsel zu Octave sollte nahtlos sein, da sie genau dieselbe Syntax verwenden.

Schließlich gibt es das Problem von SIMULINK. Wenn Sie Simulations- oder Steuerungssystemdesign durchführen möchten (es gibt wahrscheinlich eine Million andere Verwendungszwecke), ist SIMULINK fantastisch und wird mit MATLAB geliefert. Ich glaube nicht, dass ein anderer dem nahe kommt, obwohl Scilab anscheinend eine "gute" Open-Source-Alternative ist, habe ich es nicht ausprobiert.

Frieden.


"... weil es von einer Gruppe von Freiwilligen entwickelt und gepflegt wurde, wobei die Entwicklung von MATLAB von der Industrie mit Millionen von Dollar finanziert wird." Der Geldbetrag in einem Projekt ist nicht die Kausalität für Qualität und Fehlerfreiheit. Ihre ist vielleicht nicht einmal eine Korrelation.
Gagarine

"Sie verwenden genau die gleiche Syntax" Nein, das tun sie nicht.
Cris Luengo

8

Ich habe gerade angefangen, Octave zu benutzen. Und ich habe Leute gesehen, die Matlab benutzt haben. Ein wesentlicher Unterschied besteht darin, dass Octave über eine Befehlszeilenschnittstelle und Matlab über eine grafische Benutzeroberfläche verfügt. Laut mir ist eine grafische Benutzeroberfläche sehr gut zum Debuggen geeignet. In Ocatve müssen Sie Befehle ausführen, um zu sehen, wie lang eine Matrix usw. ist. In Matlab wird jedoch alles über eine gute Benutzeroberfläche gut dargestellt. Aber Octave ist kostenlos und gut für die grundlegenden Aufgaben, die ich mache. Wenn Sie sicher sind, dass Sie nur grundlegende Dinge tun werden oder nicht sicher sind, was Sie gerade brauchen, dann entscheiden Sie sich für Octave. Sie können für das Matlab bezahlen, wenn Sie wirklich das Bedürfnis haben.


2
Octave hat eine GUI, die sich derzeit in der Beta befindet. Verwenden Sie den Befehl --force-gui, wenn Sie die Oktave ausführen.
ig343

6
... und ab Octave Version 4 ist die GUI die Standard-Benutzeroberfläche.
Ruslan

7

Das Besondere an Matlab sind die hervorragenden Werkzeugkästen in verschiedenen Disziplinen. Da Ihr Hauptziel darin besteht, Matlab zu lernen, gibt es keinen Unterschied, wenn Sie mit Octave oder Matlab arbeiten!

Nur Matlab ohne coole Toolbox zu kaufen (was im Grunde von Ihrem Hauptfach abhängt), ist keine vernünftige Ausgabe!

Sie können definitiv einen guten Start mit Octave haben und unzählige Tutorials auf Matlab im Internet verfolgen.


4

Es gibt nicht viel, was ich der Antwort von Rody Oldenhuis hinzufügen möchte. Normalerweise folge ich der Strategie, dass alle Funktionen, die ich schreibe, in Matlab ausgeführt werden sollen.

Einige spezifische Funktionen, die ich auf beiden Systemen für die folgenden Anwendungsfälle teste:

a) Octave benötigt keinen Lizenzserver - z. B. wenn Ihre Institution keine lokalen Lizenzen unterstützt. Ich habe es einmal in einer Situation verwendet, in der das System, auf dem ich ein Skript verwendet habe, keine Verbindung zum Internet hatte und sehr lange laufen würde (in einer Ecke im Labor) und von vielen verschiedenen Benutzern verwendet wurde. Anmerkung: Hier geht es nicht um die Lizenzkosten, sondern um die damit verbundenen technischen Probleme.

b) Octave unterstützt andere Plattformen, beispielsweise den Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) - was nützlich sein kann.


3

Verschachtelte Funktionen und Abschlüsse werden jetzt von vielen Sprachen unterstützt, einschließlich MATLAB. JavaScript fördert Verschlüsse als erstklassiges Designprinzip.

Leider unterstützt Octave keine Schließungen (verschachtelte Funktionen mit lexikalischem Gültigkeitsbereich).

Laut http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html könnte man sogar den Eindruck bekommen, dass die Entwickler es nicht wollen oder nicht können.

Dadurch wird in beide Richtungen viel Code zerstört. Keine Problemumgehung.


Ich bin mir nicht sicher, ob das mehr stimmt. Verschachtelte Funktionen sind in Octave implementiert, und ich habe festgestellt, dass sie vielseitiger sind als die von Matlab: Zum Beispiel die Möglichkeit, Funktionen (außer Lambdas) in einem Skript zu deklarieren, was mit Matlab beim letzten Versuch nicht möglich war.
MayeulC

@MayeulC Der vielseitigere Teil schneidet tatsächlich in beide Richtungen.
Wolfgang Kuehn

0

Octave und Matlab haben viele Ähnlichkeiten. Octave ist jedoch eine Befehlszeilenschnittstelle. Sie müssen jeden Befehl in die Eingabeaufforderung eingeben, während matlab über die beste Benutzeroberfläche verfügt. Ich empfehle, zuerst die Matlab-Studentenversion zu verwenden. Nach dem Erlernen der Grundlektionen verwenden Sie Gnu Octave Permentaly. Jetzt kommt Gnu Octave mit GUI, aber es ist jetzt eine Entwicklungsversion. Es gibt einige GUI-Frontends für Gnu-Oktaven, wie Guioctave, Xoctave (nicht kostenlos), DomainMath IDE usw.


2
Entwicklungsversion von Octave (3.7.5 zu sein) kommt mit einer nativen GUI, die ziemlich gut aussieht!
kjetil b halvorsen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.