Warum / wann sollte ich MATLAB gegenüber Octave bevorzugen?


82

In unserem kleinen Betrieb müssen wir Algorithmen in einer höheren Sprache prototypisieren, bevor wir uns zu einer C-Implementierung auf eingebetteter Hardware verpflichten.

Bisher haben wir MATLAB verwendet, um dies zu tun, aber die Lizenzkosten beginnen zu schaden. Wir erwägen, unseren MATLAB-Code nach Octave zu portieren.

Gibt es einen bestimmten Grund, das nicht zu tun? Werden wir die Kompatibilität aufheben, insbesondere wenn wir externe Partner haben, die darauf bestehen, MATLAB zu verwenden? Gibt es Leistungseinbußen, die wir erwarten können?


7
Sie sollten die Kosten für Migration und Schulung berücksichtigen.
Daniel Moura


5
@Mikhail: Wegen der Schnittstelle zu Partnern, die Matlab verwenden.
Jonas

2
@ Jonas: Auch externe Partner könnten überzeugt sein ... Wenn sie sehen, dass alle über die Migration nach Python sprechen ...
Mikhail

Antworten:


52

2008 habe ich versucht, dasselbe zu tun. Ich bemerkte schnell die folgenden Showstopper:

  • Toolboxen sind nicht so vollständig und nicht so gut getestet. Besonders die Bildverarbeitungs-Toolbox, auf die sich meine Arbeit stark stützte (der große Show-Stopper war, dass Imtransform nicht implementiert wurde).
  • Der Octave-Debugger und der Profiler waren im Vergleich zu Matlab primitiv.
  • Wenn Sie mit anderen zusammenarbeiten, kann es sehr schwierig sein, sie dazu zu bringen, sich zu ändern.
  • Wenn Sie Toolboxen von Drittanbietern verwenden, können Sie diese selbst zum Laufen bringen.
  • Die Handlungen von Octave haben keine Veröffentlichungsqualität.

Aber ich muss sagen, dass ich im Allgemeinen beeindruckt war, wie kompatibel Octave mit Matlab ist. Wenn Sie Matlab grundlegend verwenden, können Sie Glück haben. Schließlich war dies im Jahr 2008, in zwei Jahren können sich die Dinge sehr ändern.


8
Ich glaube nicht, dass das Problem etwas mit MATLAB-Benutzern zu tun hat. Es ist großartig, dass es eine FOSS-Alternative gibt, und Leute, die an einer solchen Anstrengung arbeiten wollen, tun dies. Die Leute können mit ihrer Zeit machen, was immer sie wollen. Die Kritik an den Benutzern eines bestimmten Programms ist kindisch.
Carlosdc

2
Für alle, die interessiert sind, folgt es dem Link für Octave 3.8 Windows Installer: mxeoctave.osuv.de
juliohm

2
Diese Probleme können über die Website bountysource.com/teams/gnu-octave/issues behoben werden. Das Geld kostet zehnmal weniger als eine Matlab-Lizenz.
Sergei

2
Ab 2017 sollten Sie es wirklich versuchen. Sie werden überrascht sein, dass die meisten, wenn nicht alle Ihrer MATLAB-Skripte sofort ausgeführt werden (abgesehen von bestimmten Toolboxen). Sie müssen einen Nachmittag damit verbringen, einige kleinere Inkompatibilitäten zu korrigieren. Was ist ein Nachmittag im Vergleich zum Gewinn der Entwicklung lizenzfreier Open Source-Software?
Hugo Raguet

24

Ganz oben auf meinem Kopf:

  1. Es gibt viele Toolboxen, die Octave nicht hat, wie ich herausgefunden habe, als ich vor zwei Semestern versuchte, Hausaufgaben in einem Kurs für maschinelles Lernen zu machen.
  2. Octave hat einen viel schlechteren Debugger. Es war fast unmöglich, damit zu arbeiten.
  3. Matlab ist für viele Arten von Operationen viel schneller.
  4. Matlabs Handlungen sind viel schöner.
  5. Octave hat keine native GUI. Es gibt GUIs für Octave, aber sie sind Matlabs einheimischer unterlegen.

+1 für Punkt 5. Ich habe noch nicht einmal eine kostenlose GUI für Octave gefunden, die ich installieren kann und die zuverlässig funktioniert, geschweige denn eine gute. SciLab ist vielleicht eine gute Alternative zu Matlab, aber ich weiß nicht, wie gut es in Bezug auf die Punkte 1 bis 4 ist.
Stefan Smith

15

Ich habe auch Oktave und R getestet.

In Bezug auf die Oktave: Ich war sehr beeindruckt von der Ähnlichkeit der Oktavsyntax. Ich habe nicht viel Zeit gebraucht, um meine MATLAB-Skripte in die Oktave zu transportieren. Währenddessen habe ich ein besonderes Problem beim Drucken von Markern zusammen mit der Fehlerleiste, das von Jarno Rajahalme bei nabble behoben wurde, und beim Ändern der xtick-Schriftgröße, welche Problemumgehung ich in einer Frage-Antwort bei nabble erhalten habe. Es gibt also immer noch einige Fehler, die mit etwas Aufwand behoben werden können. Wenn Sie Probleme haben, können Sie das Nabble Mailing-Forum ausprobieren: help-octave@octave.org. Übrigens kann sich mein Team nicht (benutzerfreundlich) daran anpassen, wie sie sich an MATLAB anpassen, daher verwenden wir weiterhin MATLAB. Da MATLAB unter gnuplot erstellt wurde, besteht eine andere Möglichkeit, seine Fehler zu beheben, darin, die generierte gnuplot-Datei zu bearbeiten. Die beste IDE, die ich gefunden habe, war QtOctave, die ich in "

In Bezug auf R: Laut einer Untersuchung von SciViews ist die Leistung von R MATLAB und der Oktave überlegen. Ich habe nicht viel Erfahrung mit R. Ich habe mclust package studiert, um ein Wikibook-Kapitel über EM Clustering in R zu schreiben. Übrigens scheinen sie eine sehr aktive Community zu haben. So finden Sie möglicherweise Pakete von Drittanbietern zu Vorschlägen, die nicht so standardisiert sind. Die beste IDE, die ich gefunden habe, war das StatET-Plugin für Eclipse, JGR (Java GUI for R) und Emacs. Trotz des Zeitaufwands für das Erlernen einer neuen Programmiersprache würde ich R. ausprobieren, wenn ich eine Open-Source-Plattform für die Erstellung meiner Experimentgrafiken und einige Data-Mining-Analysen wählen würde.


10

Octave hat einige syntaktische Verbesserungen an Matlab, zum Beispiel können Sie sagen endif endforund endfunctionstatt nur end, die das Debuggen viel einfacher machen.

Mit Octave können Sie auch Funktionen dynamisch generieren und mehrere Funktionen in Skripten und Funktionsdateien definieren. Das ist viel schöner als der One-File-One-Function-Ansatz von matlab.

Schließlich hat Octave parcellfunund pararrayfundas sind sehr leistungsfähige Parallelverarbeitungswerkzeuge, die Matlab völlig fehlen. Es gibt ein parforMatlab, aber meiner Meinung nach ist es nicht der beste Weg, dies zu tun.

Nachteile für die Oktave sind, dass sie in Toolboxen etwas zurückliegen. Wenn Sie jedoch hinschauen, können Sie ähnliche Dinge finden. fsolveund lsodescheinen aus irgendeinem Grund etwas langsamer, aber robuster in der Oktave zu sein. Auch ein großer Mist für einige Leute ist das Fehlen von Symlink und der DAQ-Toolbox, aber das Zeug wird sowieso proprietär sein.

Python / Numpy ist definitiv einen Wirbel wert: Es ist leistungsfähiger, aber ihre Syntax zielt auf komplexere Codeteile ab.


1
Ich habe es gerade versucht und soweit ich das beurteilen kann, werden Pararrayfun / Parcellfun unter Windows nicht unterstützt (auch nicht nativ ohne Cygwin) failed to open pipe: pipe: not supported on this system. Ich verwende die vorgefertigten Windows-Binärdateien Octave_3.6.1_VS2010.
Amro

2
Ja, ich denke, das liegt an den Unterschieden bei der Ausführung von Shell-Skripten unter Windows und Linux, da pararrayfun / parcelfun durch das Laichen einiger untergeordneter Prozesse funktioniert. Ich weiß nicht, wie das unter Windows funktionieren würde. Ich bin mir nicht einmal sicher, ob die Windows-Binärdatei in einer Shell ausgeführt wird oder ob sie emuliert ist.
user1240280

1
Schade, eine (tragbare) parallele Version von cellfun / arrayfunc scheint eine gute Idee zu sein ... Vielleicht sollte MATLAB das auch :)
Amro

@ user1240280: Funktionen in einem Skript definieren zu können, ist meiner Meinung nach ein großer Vorteil von Octave gegenüber Matlab. Sie können damit ein ganzes Programm modular schreiben und in einer Datei speichern, sodass Sie es problemlos an sich selbst oder andere senden können. Das Fehlen einer grafischen Benutzeroberfläche von Octave ist jedoch ein großer Nachteil.
Stefan Smith

@stefan smith: Octave hat jetzt eine native GUI, die noch experimentell ist, aber nach meinen jüngsten Erfahrungen ist sie recht brauchbar und mehr oder weniger stabil. Sie können es ausprobieren mitoctave --force-gui
Legionair

9

Octave hat keine guide, was das Erstellen von GUIs sehr einfach macht. Ich verwende regelmäßig Anleitungen, um mithilfe von Kollegen Tools für mein Nicht-MATLAB zu erstellen.


6
Hat Octave ein Leitfadenäquivalent? Wurde ich deshalb herabgestimmt?
Doresoom

8

Für Ihren Anwendungsfall kann die Oktave MATLAB überlegen sein:

  • Es hat eine Syntax, mit der Sie Code schreiben können, der etwas näher an C liegt, dh + =, - =, Standardfunktionsparameterwerte, doppelt zitierte Zeichenfolgenliterale usw.

  • Angenommen, Ihre Chips sind langsamer als ein Desktop-Prozessor, ist die Geschwindigkeit wahrscheinlich kein Problem.

  • Da es viel schneller als matlab gestartet wird, ist es praktischer, es zum Testen in Shell-Skripte zu integrieren.

  • Für das Prototyping ist das Plotten mehr als ausreichend. Menschen sind nur an MATLABs Stil gewöhnt.

  • Der relative Mangel an Toolboxen ist keine große Sache, da sie auf Ihrer Zielplattform sowieso nicht verfügbar wären.

Ich benutze beide und wenn ich wechsle, vermisse ich Funktionen von den anderen.


6

Es ist interessant zu sehen, wie die Open Source-Alternative für Statistiken funktioniert, nicht jedoch für numerische Analysen. R (die Oktave der Statistik) ist heutzutage viel beliebter als das kommerzielle S-Plus (das Matlab der Statistik). Die in den anderen Antworten als Gründe genannten Gründe, nicht von Matlab abzuweichen, galten auch für R. Trotzdem haben alle gerade erst angefangen, Beiträge zu leisten, und jetzt ist R der Standard, mit besseren Grafiken, besseren Paketen und ohne weitere Lieferantenbindung.

Sie könnten also auch die Oktave dem Matlab vorziehen, wenn Sie das Gefangenendilemma überwinden können.


4
Sie sollten dies in einen Kommentar und nicht in eine Antwort einfügen.
Dima

5

Es gibt ein gutes WikiBook auf MATLAB mit einer Liste der Unterschiede zwischen MATLAB und Octave .

Nach meiner Erfahrung ist MATLAB-Kern gut auf Octave portiert, aber die Toolboxen weisen unterschiedliche Kompatibilitätsstufen auf, sodass Ihre Entscheidung davon abhängt, was genau Sie codieren möchten.

Einige Dinge, die Octave fehlen, AFAIK, sind die enge Integration mit .NET-Code und dem guideGUI-Builder (obwohl es viele andere GUI-Tools gibt, die Octave verwenden kann).

Wie andere bereits betont haben, bezahlen Sie mit MATLAB vor allem die übersichtliche Benutzeroberfläche und die Debugging- / Profiling-Tools. Erfahrene Programmierer können wahrscheinlich mit den Alternativen umgehen, aber Neulinge können Schwierigkeiten haben.


3

Beachten Sie, dass Octave Sprachkonstrukte unterstützt, die in Matlab nicht vorhanden sind (z. B. Operatoren für die automatische Inkrementierung, Do-till-Anweisungen usw.). Dies macht es manchmal ärgerlich, Code, der (von jemandem, der mit den Einschränkungen von Matlab nicht vertraut ist) für Octave entwickelt hat, auf eine Matlab-Umgebung zu portieren.

Es gibt einige andere Einschränkungen / Unterschiede bei den Octave-FAQ .


2

Sie sollten Matlab auf jeden Fall Octave vorziehen, wenn Sie es sich leisten können.

Ich habe nicht viel Erfahrung mit Octave, aber ich würde Probleme erwarten, wenn Ihr Code Matlab-Toolboxen, ausgefallene Diagramme oder Matlab-GUI verwendet.

Ich würde erwarten, dass es wie OpenOffice vs. MS Office ist. Meistens kompatibel, aber gerade anders genug, um Kopfschmerzen zu verursachen.


0

Ich habe einige lineare Regressions- und quadratische Programmieranwendungen erfolgreich auf Octave portiert.

Die lineare Regression (Backslash-Operator) funktionierte ohne Anpassung. Bei der quadratischen Programmierung musste ich von fmincon () zu sqp () wechseln , was zu ähnlichen Ergebnissen führte.

Trotzdem sind die Toolboxen und die Benutzeroberfläche in Octave in der Tat weniger ausgereift (ich habe so viel Zeit mit grundlegenden Dingen verbracht), obwohl sie in den letzten zwei Jahren rasch Fortschritte gemacht haben.

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.