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.
Antworten:
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:
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 :)
quelle
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.
quelle
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?
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle