WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Steigung im Bode-Diagramm

 

ABel
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 23.04.20
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 17.11.2024, 19:30     Titel: Steigung im Bode-Diagramm
  Antworten mit Zitat      
Hallo,

bei der Lösung der Übertragungsfunktion eines Hochpasses ergibt sich eine Anfangssteigung von 10dB pro Dekade. Es müssten doch aber 20dB pro Dekade sein?

[code]
fr1=31.333;
xsys1 = zpk(0,[-fr1],1);
bode(xsys1);

w=logspace(-1,8,6001);
[mag1, pha1, w1] = bode (xsys1,w);
semilogx(w,10*log10(mag1));
[/code]

Die Übertragungsfunktion lautet:
s
y1: ---------
s + 31.33

Die Nullstelle bei 31.333Hz stammt aus einer LTspice-Simulation (Lage der Phase mit 45°).
Mit 20*log10(mag1) stimmt die Steigung. Das ist doch aber nicht richtig?!

Gruß Andreas
Private Nachricht senden Benutzer-Profile anzeigen


ABel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 23.04.20
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 18.11.2024, 19:30     Titel:
  Antworten mit Zitat      
Hallo,

anbei Mal ein Verglich zwischen den Octave-Berechnungen und der LTspice-Simulation.

Gruß Andreas

Phase.jpg
 Beschreibung:

Download
 Dateiname:  Phase.jpg
 Dateigröße:  101.51 KB
 Heruntergeladen:  25 mal
Magnitude.jpg
 Beschreibung:

Download
 Dateiname:  Magnitude.jpg
 Dateigröße:  101.73 KB
 Heruntergeladen:  19 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
ABel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 23.04.20
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 25.11.2024, 16:47     Titel:
  Antworten mit Zitat      
Hallo,

das mit der Steigung ist in Ordnung so. Für die logarithmische Darstellung muss mit 20*log10() gearbeitet werden, weil es sich um Feldgrößen und nicht um Energiegrößen handelt. Siehe: https://de.m.wikipedia.org/wiki/Leistungsgr%C3%B6%C3%9Fe

Nun aber gleich das nächste Problem:

Die Berechnungen im Zeitbereich sehen im Skript so aus:
fn1 = lsim(xsys1,fin,t2(t2max));
fn2 = lsim(xsys2,fin,t2(t2max));
fn3 = lsim(xsys3,fin,8*t2(t2max));
fn4 = lsim(xsys4,fin,8*t2(t2max));
fn5 = lsim(xsys5,fin,8*t2(t2max));
fn6 = lsim(xsys6,fin,8*t2(t2max));
fou = lsim(xsys7,fin,8*t2(t2max));

t2(t2max)=6e-4 also 0,6ms oder 600us

Warum ist das für n1 und n2 richtig und ab n3 nicht?

Alle fnx werden mit dem Zeitvektor t2 geplottet. fn1 und fn2 also mit
der „richtigen“ Zeitbasis, ab fn3 werden dann 8*0,6ms=4,8ms auf 0,6ms
zusammengestaucht?

Gruß Andreas

Systemoutput n3 n4.png
 Beschreibung:

Download
 Dateiname:  Systemoutput n3 n4.png
 Dateigröße:  118.69 KB
 Heruntergeladen:  10 mal
Systemoutput n1 n2 n5 n6 out.png
 Beschreibung:

Download
 Dateiname:  Systemoutput n1 n2 n5 n6 out.png
 Dateigröße:  200.28 KB
 Heruntergeladen:  8 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
ABel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 23.04.20
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 26.11.2024, 07:50     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß leider immer noch nicht, wie ich mit einer Übertragungsfunktion und einem Output den Input errechnen kann.

Es gibt im Octave-Paket „Control“ zwar die Funktion inv(), die eine Übertragungsfunktion invertiert. Die vertauscht Zähler und Nenner, macht also aus Polen Nullstellen und umgekehrt. Mit dieser invertierten Übertragungsfunktion lässt sich aber nicht mit lsim() weiterrechnen. Lsim() bricht mit einer Fehlermeldung ab, weil:
LTI model. System must be proper, i.e. it must not have more zeros than poles.

Also vorwärts geht es:
sys = zpk([0 -zero1],[-pol1 -pol2],1); # bilde Übertragungsfunktion aus Polen und
Nullstellen
[mag, pha] = bode (sys,freq); # berechne Magnitude und Phase (Frequenzbereich)
fout = lsim(sys,fin,tmax); # berechne Output aus Input (Zeitbereich)

Auch das noch:
isys=inv(sys); # Übertragungsfunktion invertieren

Aber das nicht mehr:
fin=lsim(isys,fout,tmax); # berechne Input aus Output (Zeitbereich)

Es gibt zwar ein Octave-Paket „symbolic“, das neben der Laplace-Transformation auch die inverse Laplace-Transformation beherrscht, das aber nur symbolisch und eben leider nicht für diskrete Funktionen.

Hat Jemand einen Tipp für mich, wie ich mit der Lösung meines Problems weiter komme?

Gruß Andreas
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.