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

Werte von 2 Frequenzgängen miteinander vergleichen

 

MarkD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2021, 21:51     Titel: Werte von 2 Frequenzgängen miteinander vergleichen
  Antworten mit Zitat      
Hallo,

ich bin gerade dabei 2 Frequenzgänge miteinander zu vergleichen. Graphisch ist das auch kein Problem im Bodediagramm, jedoch möchte ich das automatisieren, also vllt durch eine for-Schleife die y-Werte der 2 Amplitudengänge miteinander verlgleichen. Meine Idee:

Code:


Strecke= tf(1,[2 1 9]) ;
Strecke2= tf(1,[2 2 7]) ;

Grenze = (1+Strecke)/Strecke ;
pert = (Strecke / Strecke2 -1) ;



for w=0.1:100
   
    y1= Grenze(w);
    y2= pert(w);
   
    if y1>y2
       
    else
        disp('nicht stabil');
       
    end
end

 
bode(Grenze, pert)

 


Doch leider erkennt er den Befehl Grenze(w) nicht. Hat jmd eine Lösung dafür?


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.446
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.01.2021, 23:31     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Doch leider erkennt er den Befehl Grenze(w) nicht.

Ich bekomme ja die Fehlermeldung
Zitat:
Error using InputOutputModel/subsref (line 43)
Subscript no. 2 is out of range.

Das hat nichts damit zu tun, dass der Befehl nicht bekannt wäre.

Ich habe nicht wirklich Ahnung von Regelungstechnik, insofern weiß ich nicht, was du denn mit Grenze(w) eigentlich ausdrücken willst. Wenn du w in Grenze einsetzen willst, würde ich zu evalfr raten.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
MarkD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2021, 01:20     Titel:
  Antworten mit Zitat      
Hallo,

tatsächlich verschwinden beide Fehler aber im Test funktioniert es leider nicht. Grenze und pert sind Übertragungsfunktionen, die im Bode Diagramm einen Frequenzgang erzeugen. Und da ist ja jeder Frequenz (w) eine Größe (y-Wert) zugeordnet. Also anders gesagt y=f(x) ist das gleiche wie y1=Grenze(w) (w für omega kreisfrequenz) von 0.1 bis 100. Im Anhang ist die Grenze-Funktion die blaue Kurve und pert die Rote. Und da die rote Kurve im Bereich zwischen 1 und 10 größer ist als die Rote, sollte eigentlich "nicht stabil" ausgegeben werden. Tut es nur leider nicht. Vielen Dank für die Antwort.

Grüße,
Mark

Bode.jpg
 Beschreibung:

Download
 Dateiname:  Bode.jpg
 Dateigröße:  38.03 KB
 Heruntergeladen:  222 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.446
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2021, 12:20     Titel:
  Antworten mit Zitat      
Hallo,

wie kommt denn das Bild zustande?
Bei mir gibt es im oberen Teil des Bode-Diagramms keine Überschneidung.

Die erste Frage ist für mich, an die Werte zu kommen, die du vergleichen willst. evalfr, freqresp und bode liefern alle Werte, aber welche du nun eigentlich willst, weiß ich nicht.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
MarkD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2021, 13:49     Titel:
  Antworten mit Zitat      
Hallo,

das Bild kommt durch den Befehl bode(Grenze,pert) zustande. Für den Test habe ich die Strecke2 zu
Code:

Strecke2= tf(1,[8 2 7]) ;
 

geändert. Das sind ja alles Übertragungungsfunktionen mit dem Parameter "s". Dieser wird durch "jw" ersetzt und für "w" werden von 0.1 bis 100 die Werte eingesetzt. Das Ergebnis des Einsetzens ist ein y-Wert (Magnitude). Dabei ist es egal ob er alle y-Werte der beiden Übertragungsfunktionen gleichzeitig prüft oder in einer Schleife einzeln. Graphisch kann ich ja sehen ob die rote Kurve über der Blauen ist (also y1<y2 ist). Also der Vergleich ist nur ob pert über der Grenze ist. Und der ursprüngleiche Plan ist das abgreifen beider y-Werte für einen bestimmten x-Wert (in meinem Fall w) und Vergleich.

Grüße,
Mark
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.446
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2021, 15:11     Titel:
  Antworten mit Zitat      
Hallo,

Vorschlag:
Code:
[mag1,phase1,wout] = bode(Grenze, 0.1:0.1:100);
[mag2,phase2,wout2] = bode(pert, 0.1:0.1:100);

mag1 = squeeze(mag1);
mag2 = squeeze(mag2);

semilogy(wout, mag1, wout2, mag2)
if any(mag1 <= mag2)
    disp('nicht stabil')
end


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
MarkD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2021, 17:24     Titel:
  Antworten mit Zitat      
Super,

besten Dank! Genau so ist perfekt. Muss nur noch die Befehle verstehen, aber das ist mit ein bisschen Recherche auch möglich.

Beste Grüße,
Mark
 
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.