Forum: Mikrocontroller und Digitale Elektronik MATLAB-Alternative für Bode-Diagramme


von Walther E. (tomete)


Lesenswert?

Guten Abend.

gibt es ein ähnliches Programm wie MATLAB, bei dem man eine 
Übertragungsfunktion eingeben kann, zu der dieses das Bode-Diagramm 
zeichnet? Ich kann zwar theoretisch von der Uni aus eine Version 
lizensieren lassen, aber das bringt irgendwie nur Probleme mit sich, 
sobald ich meine Version aktivieren will. Die sagen praktisch, dass ich 
meinen Registrierungscode im Programm abrufen soll, dass ich runterladen 
will, um es runterladen zu dürfen (Tolle Logik)

Type 'license' at the MATLAB prompt to get your license number or get an 
activation key from your MATLAB administrator.

Allerdings brauche ich das Diagramm bis Montag.
Da ich allerdings nur ungern ne Lizenz von etwas kaufen will, dass ich 
eventuell früher oder später doch von der Uni kriege wüsste ich gerne, 
ob es ne Alternative gibt. Die Übertragungsfunktion ist:

         3,65
-------------------------
(s+1)(2s+1)(4s+1)(13s+1)

falls jemand in der Lage ist ein wirklich genaues Diagramm einfach 
Frei-Hand zu konstruieren.

von Al3ko -. (al3ko)


Lesenswert?

Walther E. schrieb:
> falls jemand in der Lage ist ein wirklich genaues Diagramm einfach
> Frei-Hand zu konstruieren.

python kann das. "python bode plot" in Google führt zum Ergebnis.

Ansonsten kann ich dir das ggf morgen mit Matlab potten.

von Flo (Gast)


Lesenswert?

Scilab

von Helmut S. (helmuts)


Lesenswert?

Flo schrieb:
> Scilab

Ich werfe mal Octave ein. Octave ist von der Syntax her nahe an der von 
Matlab.

Sculab hat eine deutlich andere Syntax. Vordefinierte Konstanten 
beginnen mit %.
Beispiel:
u = 2*%pi*r
Ich finde das äußerst unpraktisch, weil damit die Lesbarkeit von Formeln 
schlechter wird. Vor allem muss man dann anderen jedes mal erklären, 
dass das nicht Prozent bedeutet.

: Bearbeitet durch User
von Ansgar K. (malefiz)


Lesenswert?


von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

Hier mal eine Möglichkeit mit Octave.

In der 1. Zeile wird die "control" toolbox geladen.

>> pkg load control
>> p1=[1 1];p2=[2 1];p3=[4 1];p4=[13 1];
>> P=conv(p1,p2);
>> P=conv(P,p3);
>> P=conv(P,p4);
>> F=tf([3.65],P)

Transfer function 'F' from input 'u1' to output ...

                        3.65
 y1:  --------------------------------------
      104 s^4 + 190 s^3 + 105 s^2 + 20 s + 1

Continuous-time model.

>> bode(F);



Falls man nur die Werte habene will: [mag, pha, w] = bode(F);
Statt der Mehrfachverwendung von conv() gibt es vermutlich eine 
elegantere Methode die Gesamtfunktion zu definieren.

: Bearbeitet durch User
von Walther E. (tomete)


Lesenswert?

Vielen Dank für die vielen Antworten. Ich habe jetzt das Ergebnis von 
Octave genommen.

von Christopher J. (christopher_j23)


Lesenswert?

Auch wenn Octave bereits die Lösung war:
https://github.com/python-control/python-control
https://github.com/JuliaControl/ControlSystems.jl

Beide Lösungen sind kostenlos und sowohl Python (mit Numpy, Scipy, etc.) 
als auch Julia können es in Sachen Funktionalität und Geschwindigkeit 
locker mit Matlab aufnehmen. Da Julia sehr viel von der Syntax von 
Matlab geerbt hat ist das für Umsteiger wahrscheinlich etwas einfacher 
zu erlernen als Python/Numpy.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.