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

2D-Animation ; zeitabhängiger Plot von Simulationsdaten

 

Martin_student_gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2014, 09:49     Titel: 2D-Animation ; zeitabhängiger Plot von Simulationsdaten
  Antworten mit Zitat      
Hallo ihr lieben Matlab-Profis,

ich benötige eure Hilfe beim Erstellen einer 2D-Animation.
Und zwar lasse ich mir in einer Simulation einen Vektor mit 78 Einträgen als structure with time ausgeben. Nun möchte ich diese Einträge in einem 2D-Plot plotten, jedoch soll sich mit der Zeit der geplottete Vektor ändern. Eine typische Animation eben.

Das Problem das ich nun habe ist, dass ich ganze 30.000 Vektoren bei einer Simulationszeit von 0.2 Sekunden habe und das Video in etwa 10 Sekunden lang sein soll. Der Simulations-Solver ist ein zeitvariabler Solver (ode23t), weshalb es irgendwie doof ist, jeden x-ten Eintrag aus dem Struct zu nehmen.
Habt ihr eine Idee, wie sich das am besten umsetzen lässt? Gibt es vielleicht eine in Matlan/Simulink integrierte Funktion für dieses Problem?

Wie ich es bisher gemacht habe:
Code:
%% Animation
f = figure;
for ii=1:30:length(vout.time)
   plot(xKoord, daten_erweitert(ii,2:6:75));
   F(ii)= getframe;
end


Vielen Dank schonmal für eure Hilfe

Beste Grüße
Martin


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 16.07.2014, 10:10     Titel:
  Antworten mit Zitat      
Hallo,

da könnte deval() helfen. Damit kannst du das Ergebnis des ode-solvers zu bestimmten Zeiten Auswerten, wenn dir die adaptiven Zeitschritte ein Problem darstellen.
Damit man das testen kann, wären immer Beispieldaten gut.

Zudem kann es sich lohnen, dein F zu initilaisieren http://www.mathworks.com/matlabcent.....ive-structs-from-getframe und statt so vielen plot-befehlen, nur ein mal den plot-befehl zu schreiben und dann nur noch die Y-Daten zu aktualisieren.
Es kann sein, dass es so funktioniert, sonst musst du noch etwas dran arbeiten.
Code:
xKoord = 2:6:75;
daten_erweitert = rand(450,90);
vout.time = 1:450;
t = 1:30:length(vout.time);
T = length(t);
F = struct('cdata', cell(1,T+1), 'colormap', cell(1,T+1));
f = figure;
h = plot(xKoord, daten_erweitert(1,2:6:75));
for ii=t(2:end)
   set(h, 'ydata', daten_erweitert(ii,2:6:75))
   drawnow
   F(ii)= getframe;  
end


Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin_student_gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2014, 10:52     Titel:
  Antworten mit Zitat      
Viele Dank dafür!
Das sieht auf jeden Fall um einiges geschickter aus Wink
Man merkt wohl, dass ich vor einem Monat noch nachschauen musste, wie man eine Matrix erzeugt Embarassed

Die Zeitschritte stellen tatsächlich ein Problem dar. Ich habe mir mal in jedem Plot die aktuelle Zeit anzeigen lassen. Die Geschwindigkeit, mit der sich die Zeit ändert, varriiert sehr stark. Also les ich mich mal in deval() ein.

Nochmal: Besten Dank, Nras!
 
Martin_student_gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2014, 11:04     Titel: P
  Antworten mit Zitat      
Habe jetzt erst gesehen, dass ich Beispieldaten erwünscht sind. Aber wie lade ich hier die Daten hoch, wenn .mat nicht erlaubt ist? Gibt es noch eine andere Möglichkeit meine Daten zu speichern?
Zum Editieren von Beiträgen muss man sich wahrscheinlich anmelden, richtig?
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 16.07.2014, 11:42     Titel:
  Antworten mit Zitat      
Hallo,

ja, ich denke, dass man zum Editieren angemeldet sein muss.
Sonderlich wichtig sind die Daten hier vermutlich nicht, ich habe ja schon Beispieldaten erzeugt. Ansonsten kannst du die .mat Datei archivieren und dann hochladen.
Aber was funktioniert denn bei dem Beispiel bei dir nicht?

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin_student_gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2014, 15:05     Titel:
  Antworten mit Zitat      
Das Ploten funktioniert tadellos.
Aber das Problem ist nun wirklich, dass die Vektoren zeitlich nicht äquidistant sind. Den deval()-Befehl kann ich anscheinend nicht nutzen, weil ich meine Daten über den To Workspace-Block aus dem Simulink-Modell erhalte.

Habt ihr sonst noch Ideen?
Sonst muss ich das wohl irgendwie händisch umsetzen.
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 16.07.2014, 15:42     Titel:
  Antworten mit Zitat      
Hallo,

ich nutze kein Simulink, da kann ich dir leider nicht helfen, vielleicht kannst du die Frage ja spezieller formulieren und im Simulink Unterforum danach fragen.

Viele Grüße,
Nras.
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.