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

Movie von sich änderndem 3D Vektor

 

Newermaint
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 05.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2017, 16:36     Titel: Movie von sich änderndem 3D Vektor
  Antworten mit Zitat      
Hallo,

ich bin gerade dabei mithilfe der movie-funktion von Matlab ein Video zu erstellen, indem ein 3D-Vektor zu sehen ist, der sich mit der Zeit ändert.

Der Vektor ist dabei aber nicht durch irgendeine Funktion zeitlich abhängig, sondern ich habe eine längere Messreihe mit unterschiedlichen Werten für den Vektor.

Ich habe das ganze auch soweit hinbekommen, allerdings ist es sehr rechenaufwendig und im allgemeinen sicher katastrophal umgesetzt Wink

Hier ist, was ich bisher habe:

Code:
V=[0.0499   -0.9975   -0.0494;
    0.0587   -0.9971   -0.0480;
    0.0780   -0.9960   -0.0441;
    0.0975   -0.9944   -0.0404;
    0.1055   -0.9936   -0.0398;
    0.1020   -0.9939   -0.0422;
    0.0948   -0.9945   -0.0455;
    0.0894   -0.9948   -0.0478;
    0.0879   -0.9950   -0.0481;
    0.0912   -0.9947   -0.0467]

Das sind nur die ersten 10 Werte von mehreren tausend, also nicht wundern, wenn die Werte fast alle gleich sind Wink

Code:
for i=1:10
figure;
meshgrid(-2:0.5:2);
[H,I,J]=sphere;
r=1;
H=H*r;
I=I*r;
J=J*r;
surf(H,I,J);
alpha(0.2);
hold on;

quiver3(0,0,0,V(i,1),V(i,2),V(i,3),'blue','linewidth',3);
hold on;

view(45,45);
F(i)=getframe();
close all;
end;

movie(F,1,2);


Das ganze funktioniert soweit, allerdings ist mir bisher nichts anderes eingefallen, als jeden Vektor zu plotten, ein Bild davon zu machen und das Fenster wieder zu schließen.

Für eine kurze Datenreihe wäre das nicht weiter schlimm, allerdings muss ich das ganze auf Datenreihen für mehrere tausend Werte übertragen.

Deswegen hatte ich gehofft, dass mir hier vielleicht jemand helfen kann, das ganze so umzuschreiben, dass keine tausende Fenster geöffnet werden müssen.

Beste Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

statt die graphischen Objekte neu zu erzeugen, kannst du die Daten ersetzen. Diese sind in den Eigenschaften UData, VData, ..., ZData.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Newermaint
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 05.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2017, 12:04     Titel:
  Antworten mit Zitat      
Danke für die Antwort. Leider verstehe ich Sie nicht ganz bzw. weiß nicht, wie ich die Daten ersetzen soll.

Wenn du mir helfen könntest, den Code umzuschreiben, würde ich mich sehr freuen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.03.2017, 16:18     Titel: Re: Movie von sich änderndem 3D Vektor
  Antworten mit Zitat      
Hallo Newermaint,

Code:
figure;
meshgrid(-2:0.5:2);
[H,I,J]=sphere;
r=1;
H=H*r;
I=I*r;
J=J*r;
surf(H,I,J);
alpha(0.2);
hold on;
H = [];
view(45,45);
for i=1:10
  if isempty(H)
    H = quiver3(0,0,0,V(i,1),V(i,2),V(i,3),'blue','linewidth',3);
  else
    set(H, 'UData', V(i,1), 'VData', V(i,2), 'WData', V(i,3));
  end
  pause(0.02);  % Or DRAWNOW
  F(i)=getframe();
end
movie(F,1,2);


Der Pause-Befehl war früher notwendig, damit Matlab alle Grafik-Updates hinbekommt. Vielleicht reicht drawnow heutzutage aus.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Newermaint
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 05.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2017, 16:54     Titel:
  Antworten mit Zitat      
Vielen Dank! Es funktioniert sehr gut.

Nur eine Kleinigkeit ist mir aufgefallen: Mitten im Video erscheint im Fenster "figure 1" das gleich Video nochmal kleiner in der linken unteren Ecke und erneut abgespielt. Kurz danach verschwindet es aber wieder.

Ist das nur ein Anzeigefehler. Kann morgen nochmal einen Screenshot davon hochladen.
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.