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?
Antworten:
2008 habe ich versucht, dasselbe zu tun. Ich bemerkte schnell die folgenden Showstopper:
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.
quelle
Ganz oben auf meinem Kopf:
quelle
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: [email protected]. Ü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.
quelle
Octave hat einige syntaktische Verbesserungen an Matlab, zum Beispiel können Sie sagen
endif
endfor
undendfunction
statt nurend
, 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
parcellfun
undpararrayfun
das sind sehr leistungsfähige Parallelverarbeitungswerkzeuge, die Matlab völlig fehlen. Es gibt einparfor
Matlab, 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.
fsolve
undlsode
scheinen 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.
quelle
failed to open pipe: pipe: not supported on this system
. Ich verwende die vorgefertigten Windows-BinärdateienOctave_3.6.1_VS2010
.octave --force-gui
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.quelle
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.
quelle
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.
quelle
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
guide
GUI-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.
quelle
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 .
quelle
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.
quelle
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.
quelle