Forum: PC-Programmierung Alternative zu Matlab


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Verfahrenstechniker (Gast)


Bewertung
0 lesenswert
nicht lesenswert
https://www.rath.org/matlab-is-a-terrible-programming-language.html
https://ajminich.com/2011/09/28/5-reasons-i-hate-matlab/

Ich schließe mich den in den Links genannten Punkten an. Meiner Meinung
nach ist Matlab/Octave von allen Sprachen die mit der schlechtesten
Syntax. Matlab hat eine etwas sehr komische diffuse Syntax, wenn man
sonst vor allem in C-ähnlichen Sprachen programmiert. Wahrscheinlich aus
Traditionsgründen und dem vielen bereits vorhandenen Code ist aber
Matlab wohl die verbreitetste Programmiersprache in der Forschung und
Industrie.

Als direkte Konkurrenzprodukte werden oft R, Python mit NumPy/SciPy,
Julia, Scilab und Octave genannt, wobei die OSS-Matlab-Klone wohl
hauptsächlich folgende sind: Octave und SciLab.

Ein Studienkollege hat damals (neben Matlab auf den Pool-Rechnern) auf
seiner eigenen Kiste SciLab benutzt und fand es recht gut...

Mich würde es freuen, wenn ihr eure eigenen Erfahrungen mit
Matlab-Alternativen ausführlich darlegen könntet. Danke.

von Blabla (Gast)


Bewertung
5 lesenswert
nicht lesenswert
Ich benutze jetzt Python und werde wohl meine Matlab Lizenz nicht 
verlängern auf der Arbeit. Ich Arbeite hauptsächlich mit Jupyter Lab und 
pyCharm sowohl unter Linux als auch unter Windows.

Vor allem mit grossen Datenmengen fühle ich mich bei Python besser 
aufgehoben. R und Julia habe ich noch nicht getestet soll aber auch gut 
Performant sein. Ich bin bisher Zufriedener damit als ich jemals mit 
Matlab war.

Beitrag #5718277 wurde von einem Moderator gelöscht.
von Helmut S. (helmuts)


Bewertung
3 lesenswert
nicht lesenswert
Wenn es nur um die Grunfunktionalität von Matlab geht, wäre Octave eher 
geeignet als Scilab.
Bei Scilab geht ja der "Ärger" schon bei Konstanten los. pi ist dort 
nicht pi sondern %pi, weil alle eingebauten Konstanten mit % beginnen. 
Wenn man jemand Anderem eine Formel mit pi zeigt, und pi kommt ja recht 
häufig vor, dann muss man oft erklären, dass % nicht 1/100 bedeutet.

Das Hauptargument für Matlab sind die vielen umfangreichen Toolboxen. 
Davon gibt es für Octave und Scilab weit weniger und wenn es eine 
gleichen Namens gibt, dann enthält die nicht alle Funktionen. Allerdings 
gehen die Toolboxen richtig ins Geld. Nicht jeder oder jede Firma kann 
sich das leisten.

Beitrag #5718280 wurde von einem Moderator gelöscht.
von Christoph db1uq K. (christoph_kessler)


Bewertung
1 lesenswert
nicht lesenswert
Hat schon mal jemand die Wolfram-engine/Mathematica auf dem Raspi 
ausprobiert? Ich vermute, das ist nicht ganz vergleichbar mit den oben 
genannten Programmen.
https://www.wolfram.com/raspberry-pi/

von mh (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Als weitere "Alternative"  gibts noch IDL. Aber ich rate gleich davon ab 
auch nur nachzuschauen was das für eine Sprache ist, denn du kannst

Verfahrenstechniker schrieb:
> Meiner Meinung
> nach ist Matlab/Octave von allen Sprachen die mit der schlechtesten
> Syntax. Matlab hat eine etwas sehr komische diffuse Syntax, wenn man
> sonst vor allem in C-ähnlichen Sprachen programmiert.

nur sagen, weil du IDL nicht kennst ;-)

Ich habe bis jetzt meistens python mit numpy, matplotlib und Co. 
benutzt, wenn ich nicht C++ benutzen kann/darf. Allerdings ist eine 
Sprache, die keine 32 Bit Floats kennt problematisch, wenn man sie 
braucht. Außerdem ist python (auch mit numpy) nicht besonders schnell, 
aber das trifft wohl auf alle genannten Alternativen zu.

Helmut S. schrieb:
> Wenn man jemand Anderem eine Formel mit pi zeigt, und pi kommt ja recht
> häufig vor, dann muss man oft erklären, dass % nicht 1/100 bedeutet.
Sicher, dass du dann nur das % erklären musst? In welcher Welt kommt man 
auf die Idee, dass %pi irgend etwas mit 1/100 zu tun hat?

von Vincent H. (vinci)


Bewertung
0 lesenswert
nicht lesenswert
Der große Vorteil von Octave ist dass es mehr oder weniger ein Drop-In 
Replacement für Matlab ist. Einige Funktionen sind hier und da etwas 
anders, aber im Großen und Ganzen ist die Kompatibilität recht 
beachtlich. Das ist vor allem in Hinblick auf Mathworks riesign 
"FileExchange" (sprich User-erstellte Sachen) sehr wichtig.

Wirklich vermissen tu ich eigentlich nix... man muss halt recht viele 
optionale Packages mitnehmen. Ich hab aktuell etwa:
- symbolic
- control
- signal
- image
- splines und
- optim

mit installiert. Eine Vanilla-Octave Installation ist kaum mehr als ein 
Taschenrechner.

Mit Scilab bin ich persönlich nie warm geworden und Python/Numpy/etc. 
erzeugt (meiner Meinung nach!) für schnelle Gschichtln doch etwas 
mehr... Rauschen.


/edit
Achja, eins noch. Großer Kritikpunkt. Die Performance ist (gefühlt) 
wirklich katastrophal. Ich habs zwar nicht gemessen, würde aber ad-hoc 
behaupten dass Octave generell langsamer als Matlab ist, egal wobei...

: Bearbeitet durch User
von Alexander S. (alesi)


Bewertung
0 lesenswert
nicht lesenswert
Verfahrenstechniker schrieb:
> Mich würde es freuen, wenn ihr eure eigenen Erfahrungen mit
> Matlab-Alternativen ausführlich darlegen könntet. Danke.

Wenn es nicht open source sein muss, nicht auf Linux laufen muss
und kein 1:1 Ersatz für Matlab sein muss, kommt evtl.
Igor Pro von Wavemetrics https://www.wavemetrics.com/ in Frage.

Die Dokumentation ist sehr gut, es gibt sehr viele Beispiele, es läuft 
stabil und flott und die Preise sind moderat.
Die Programmierung ist an der C Syntax orientiert und was wirklich 
erstaunlich gut funktioniert, ist das wechselweise arbeiten mit 
Kommandozeile und mit GUI. Alle Ausführungen mit der GUI landen als
Befehl in der command history und können genau so gut direkt als Befehl 
eingegeben oder in einem Skript verwendet werden.
Ursprünglich lag der Fokus auf der Analyse von Zeitreihen. Daher basiert 
alles auf waves, d.h. Funktionswerte und diskrete abhängige Variable. 
Konkret werden nur die Funktionswerte y1,y2,...,yn, x1 und delta-x oder 
x1 und xn, angegeben. Durch Kombination zweier waves können aber auch 
y1,y2,...,yn und x1,x2,...,xn verwendet werden. Waves können bis zu 4 
Dimensionen haben. Symbolische Algebra ist, soweit ich weiß, nicht 
möglich.

von A. S. (rava)


Bewertung
0 lesenswert
nicht lesenswert
mh schrieb:
> Außerdem ist python (auch mit numpy) nicht besonders schnell,

kann ich nicht bestätigen. Wie bei anderen Sprachen muss man verstehen, 
was unter der Haube passiert. Das mag etwas gewöhnungsbedürftig sein, 
wenn man vom C++ kommt.
Aber wer gut vektorisiert, ist mit numpy richtig schnell. Und was man 
dabei lernt, hilft auch bei hardwarenaher programmierung (stichworte: 
pipelines und SIMD)

von Helmut S. (helmuts)


Bewertung
0 lesenswert
nicht lesenswert
Helmut S. schrieb:
> Wenn man jemand Anderem eine Formel mit pi zeigt, und pi kommt ja recht
> häufig vor, dann muss man oft erklären, dass % nicht 1/100 bedeutet.
Sicher, dass du dann nur das % erklären musst? In welcher Welt kommt man
auf die Idee, dass %pi irgend etwas mit 1/100 zu tun hat?

Ich beantworte auch Fragen von Leuten die keine Ings sind. Mit dem 
vorangestellten % bei eingebauten Konstanten hat das Scilab-Team eine 
schlechte Entscheidung getroffen. Das schreckt jeden 
Matlab/Octave-Anwender schon mal gleich ab, wenn nicht mal die 
trivialsten Formeln mit copy/paste  funktionieren.

von Sven B. (scummos)


Bewertung
0 lesenswert
nicht lesenswert
Helmut S. schrieb:
> Wenn es nur um die Grunfunktionalität von Matlab geht, wäre Octave eher
> geeignet als Scilab.
> Bei Scilab geht ja der "Ärger" schon bei Konstanten los. pi ist dort
> nicht pi sondern %pi, weil alle eingebauten Konstanten mit % beginnen.
> Wenn man jemand Anderem eine Formel mit pi zeigt, und pi kommt ja recht
> häufig vor, dann muss man oft erklären, dass % nicht 1/100 bedeutet.

Naja, ok, aber nur wenn der Jemand absolut keine Ahnung von nichts hat. 
Das "m" in F = m*a bedeutet ja auch nicht "Meter".

von Helmut S. (helmuts)


Bewertung
0 lesenswert
nicht lesenswert
Sven B. schrieb:
> Helmut S. schrieb:
>> Wenn es nur um die Grunfunktionalität von Matlab geht, wäre Octave eher
>> geeignet als Scilab.
>> Bei Scilab geht ja der "Ärger" schon bei Konstanten los. pi ist dort
>> nicht pi sondern %pi, weil alle eingebauten Konstanten mit % beginnen.
>> Wenn man jemand Anderem eine Formel mit pi zeigt, und pi kommt ja recht
>> häufig vor, dann muss man oft erklären, dass % nicht 1/100 bedeutet.
>
> Naja, ok, aber nur wenn der Jemand absolut keine Ahnung von nichts hat.
> Das "m" in F = m*a bedeutet ja auch nicht "Meter".

Auf jeden Fall ärgert es mich, wenn ich da dauernd %pi statt pi 
schreiben muss. Das war für mich einer der Gründe nach Octave zu 
wechseln.

von vorticon (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Verfahrenstechniker schrieb:
> Mich würde es freuen, wenn ihr eure eigenen Erfahrungen mit
> Matlab-Alternativen ausführlich darlegen könntet.

Octave ist interessant, aber Fakt ist, dass zwischen MATLAB und Octave 
zum Teil Welten liegen. In einigen Punkten (bspw. objektorientierte 
Programmierung, oder Performance des Skriptinterpreters) hinkt Octave um 
5-10 Jahre hinterher. In vielen Bereichen ist MATLAB einfach state of 
the art, das gilt bspw. fuer Optimierungsverfahren, ODE-Solver, lineare 
Gleichungssysteme u.v.m.

In manchen Bereichen mag es auch andersherum sein. Aber bislang bin ich 
immer zum Schluss gekommen, dass es keinen Sinn hat, mein Glueck mit 
Octave zu versuchen, solange ich MATLAB zur Verfuegung habe. Aber je 
nach Anwendung und Projekt-Randbedingungen (kommerziell, akademisch, 
privat) kann das auch anders sein.

von Christoph M. (mchris)


Bewertung
0 lesenswert
nicht lesenswert
Ich verwende Octave schon lange und finde es super.
Manchmal ist es auch so, dass man in einer Firma keine Matlab-Lizenz 
bekommt und dann ist es ziemlich praktisch.
Wir haben schon ganze Projekte mit Octave hoch gezogen. Es hängt immer 
davon ab, welche Performance man braucht. Wenn man rechenintensive 
Simulationen macht, ist Matlab sicher das richtige. Aber für einfache 
Datenauswertungen reicht Octave völlig.

Immerhin legt man für die Matlab-Grundversion über 1000Euro hin. Dann 
kommen noch mal die Lizensen für jede einzelne Toolbox und die sind noch 
viel teurer.

von vorticon (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ja, matlab ist ziemlich teuer. Ist aber eh nicht mein Geld ;)
Das Konzept, aus jedem Pups eine neue Toolbox fuer 3000EUR zu machen, 
find ich auch fragwuerdig.
Es gibt aber auch Software, die teurer und deutlich nutzloser ist (z.B. 
DIAdem).

von Blechbieger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christoph M. schrieb:
> Dann kommen noch mal die Lizensen für jede einzelne Toolbox und die sind
> noch viel teurer.

vorticon schrieb:
> Das Konzept, aus jedem Pups eine neue Toolbox fuer 3000EUR zu machen,
> find ich auch fragwuerdig.

Der Wert von Matlab liegt gerade in den Toolboxen, deren Know-how und 
die resultierende Zeitersparnis. Firmen die damit Geld verdienen sind 
dann zähneknirschend bereit diese Preise zu zahlen.

von Andreas S. (andreas) (Admin) Benutzerseite Flattr this


Bewertung
0 lesenswert
nicht lesenswert
mh schrieb:
> Als weitere "Alternative"  gibts noch IDL. Aber ich rate gleich
> davon ab auch nur nachzuschauen was das für eine Sprache ist

Kann ich nur unterschreiben.

Was die Sprache betrifft sind MATLAB, IDL, Scilab alle Fossilien. 
Wirklich Software entwickeln möchte man damit nicht. Glücklicherweise 
gibt es immer weniger Gründe dafür (Toolboxen sind evtl. noch einer). 
Wenn man keine Toolboxen braucht, dann ist Python in jeder Hinsicht 
überlegen.

> Ich habe bis jetzt meistens python mit numpy, matplotlib und Co.
> benutzt, wenn ich nicht C++ benutzen kann/darf. Allerdings ist eine
> Sprache, die keine 32 Bit Floats kennt problematisch, wenn man sie
> braucht.

Numpy unterstützt 32 Bit float.

von mh (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Andreas S. schrieb:
> Numpy unterstützt 32 Bit float

Ja, numpy unterstützt 32 Bit floats und hat sonderbare promotion Regeln, 
weil python keine 32 Bit floats kennt. Warum ist

(numpy.float32(2)**2).dtype == numpy.float64

und

(numpy.arange(5, dtype=numpy.float32)**2).dtype == numpy.float32

von Walter T. (nicolas)


Bewertung
-2 lesenswert
nicht lesenswert
vorticon schrieb:
> In einigen Punkten (bspw. objektorientierte
> Programmierung, oder Performance des Skriptinterpreters) hinkt Octave um
> 5-10 Jahre hinterher.

Kein Wunder, dass Dein Beitrag abgewertet wurde. Mit Recht. In einem 
Matlab-Bashing-Thread hat eine differenzierte Betrachtung nichts 
verloren!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.