Verfasst am: 21.01.2010, 19:20
Titel: Geraden erstellen und andere Problemchen mit Plots
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:
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:
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.
%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')
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?
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
Einstellungen und Berechtigungen
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
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.