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

Geraden erstellen und andere Problemchen mit Plots

 

Blackeagle
Forum-Anfänger

Forum-Anfänger



Beiträge: 20
Anmeldedatum: 21.01.10
Wohnort: Hamburg
Version: R2011b
     Beitrag Verfasst am: 21.01.2010, 19:20     Titel: Geraden erstellen und andere Problemchen mit Plots
  Antworten mit Zitat      
Hallo!

Zunächst einmal möchte ich mich für den ungenauen Titel entschuldigen, aber anders lässt es sich schlecht ausdrücken.

Habe eine Aufgabe, die sich in zwei Bereiche unterteilt. Der erste ist ein Regelungstechnischer und ist kein Problem. Im zweiten Teil geht es um die Erstellung einer Graphik mit Hilfe eines Script-Files.


Hier nun zunächst mal die Aufgaben an sich um einen Überblick zu verschaffen:
Zitat:
Schreiben Sie ein Matlab-Script-File, in dem folgende Aufgaben erledigt werden:

I Plotten des Zeitverlaufs der Regelgröße (die aus Simulink exportiert wurde), Farbe grün
II Einzeichnen einer Gerade, die den stationären Endwert der Regelgröße erkennen lässt (Farbe rot)
III Einzeichnen des Sollwertsprungs (von Null auf Eins zum Zeitpunkt t=1), Farbe blau
IV Berechnung und Kennzeichnung der Überschwingweite im Plot
V Einzeichnen von zwei Geraden, die ein 5%-Toleranzband um den stationären Endwert kennzeichnet, Farbe magenta
VI Ermittlung der Ausregelzeit und Kennzeichnung des Punkts im Plot, wo sie abgelesen werden kann (Punkt als roten Kreis darstellen)


Aus Simulink wurden zwei Arrays importiert: t (Zeit) und y (Istwerte eines Regelkreises).

Teilaufgaben I, II und V waren kein Problem.

Teilaufgabe III schon eher: Ich habe diese zunächst wie folgt gelöst:
Code:
plot([0,1],[0,0],'blue')
plot([1,1],[0,1],'blue')
plot([1,t(end)],[1,1],'blue')

Ich finde diese Lösung allerdings programmiertechnisch hässlich, da ich den Sprung mit Hilfe von drei Geraden zusammengebastelt habe.
Geht das eleganter?

Teilaufgabe IV: keine Ahnung. Ich habe jetzt folgende Gerade gebastelt:
Code:
plot([t(33),t(33)],[y(end),max(y)],'black')
text(t(33),0.8,'\leftarrow Überschwingweite')

Hieran finde ich am hässlichsten, dass ich den Wert t(33) durch einfaches vergleichen der Arrays y und t herausgefunden habe. Sprich ich habe per Auge gesehen, dass y an der Stelle 33 am höchsten ist und dementsprechend auch t an der Stelle 33 nehmen muss.
Kann ich nicht das zu dem max(y) zugehörige t per irgendeiner Funktion herausfinden?
Zusätzlich weiß ich nicht, wie ich das Ergebnis der Überschwingweite in den Plot schreiben kann, dessen Berechnung eigentlich einfach ist.

Teilaufgabe VI habe ich noch nicht bearbeitet, brauche da aber wahrscheinlich ähnliche Sachen.

Bis jetzt sieht mein Plot so aus:


mein gesamtes Script:
Code:
%Sprungantwort
plot(t,y,'green')
hold
xlabel('t')
ylabel('y')
title('t-y-Graph')

%Gerade des Endwertes
plot([0,t(end)],[y(end),y(end)],'red')

%Einheitssprung zum Zeitpunkt t=1
plot([0,1],[0,0],'blue')
plot([1,1],[0,1],'blue')
plot([1,t(end)],[1,1],'blue')

%+-5%-Toleranzband um den Endwert
plot([0,t(end)],[0.05*y(end)+y(end),0.05*y(end)+y(end)],'magenta')
plot([0,t(end)],[y(end)-0.05*y(end),y(end)-0.05*y(end)],'magenta')

%Gerade des Maximums der Sprungantwort
plot([0,max(t)],[max(y),max(y)],'cyan')

%Überschwingweite
plot([t(33),t(33)],[y(end),max(y)],'black')
text(t(33),0.8,'\leftarrow Überschwingweite')


Ich wäre für alle Kommentare, Tips und Hilfen dankbar.

mfg,
Blackeagle
Private Nachricht senden Benutzer-Profile anzeigen


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2010, 10:04     Titel:
  Antworten mit Zitat      
Hallo,

zu III: schau Dir mal die Funktion stairs an
zu IV:
Code:

mt = t(y == max(y))
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Blackeagle
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 20
Anmeldedatum: 21.01.10
Wohnort: Hamburg
Version: R2011b
     Beitrag Verfasst am: 22.01.2010, 13:12     Titel:
  Antworten mit Zitat      
Hi!

Danke für deine Antwort!

Zitat:

zu III: schau Dir mal die Funktion stairs an

Diese Funktion bringt mich nicht weiter, da ich den Einheitssprung nicht als mathematische Funktion vorliegen habe. Ich müsste eine Funktion folgenden Typs erstellen:
f(x)=1{x|x<=1; sonst 0}
Wie funktioniert sowas?

Zitat:
zu IV:
Code:

mt = t(y == max(y))
 


Das funktioniert bestens, danke!


mfg,
Blackeagle
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2010, 14:12     Titel:
  Antworten mit Zitat      
also Deine drei Plot-Befehle kann ich durch folgendes ersetzen:

Code:

stairs([0,1,t(end)],[0,1,1])
 



Was gefällt Dir daran nicht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Blackeagle
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 20
Anmeldedatum: 21.01.10
Wohnort: Hamburg
Version: R2011b
     Beitrag Verfasst am: 22.01.2010, 16:27     Titel:
  Antworten mit Zitat      
hmm Smile

das hört sich doch ganz gut an, hab ich nicht geschafft. danke!

mfg,
Blackeagle
Private Nachricht senden Benutzer-Profile anzeigen
 
Blackeagle
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 20
Anmeldedatum: 21.01.10
Wohnort: Hamburg
Version: R2011b
     Beitrag Verfasst am: 24.01.2010, 19:34     Titel:
  Antworten mit Zitat      
hi!

ich nochmal.
1. gibt es einen einfachen befehl, den schnittpunkt zweier plots zu bestimmen?
2. gibt es einen befehl, der eine kurve an eine beliebig genaue fourierreihe annähert und diese als funktion in einer variablen ablegen kann?

vielen dank für eure hilfe,
mfg,
Blackeagle
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 - 2025 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.