RegistrierenRegistrieren   LoginLogin   FAQFAQ    SuchenSuchen   
Animation aus Datenreihe mit Matlab
 
Neue Frage »
Antworten »
    Foren-Übersicht -> Sonstiges
Autor Nachricht
Henri



Anmeldungsdatum: 08.02.2014
Beiträge: 82

Beitrag Henri Verfasst am: 08. März 2019 20:28    Titel: Animation aus Datenreihe mit Matlab Antworten mit Zitat

Meine Frage:
Guten Abend zusammen,
Ich möchte aus einer Datenreihe aus einer Messung (Drehwinkel) eine Animation erstellen, bei der eine Ellipse immer genau die entsprechende Drehung macht.

Meine Ideen:
Ich bin in Matlab noch Anfänger. Herausgefunden habe ich, dass ich eine for Schleife in Verbindung mit drawnow benutzen kann. Ich habe aber nach stundenlanger Suche und Herumprobieren noch nicht herausgefunden wie ich:
1. Den laufenden Index dem entsprechenden Wert aus der Datenreihe zuweisen kann
2. Ich eine Ellipse zeichnen kann und diese dann für jeden Wert entsprechend drehen kann (und wieder zurück drehen, damit der nächste Wert wieder absolut stimmt und nicht drauf gerechnet wird).
Ich wäre für Hilfe von jemanden, der grundsätzlich besser mit Matlab vertraut ist, sehr dankbar!


Zuletzt bearbeitet von Henri am 09. März 2019 15:59, insgesamt einmal bearbeitet
moody_ds



Anmeldungsdatum: 29.01.2016
Beiträge: 515

Beitrag moody_ds Verfasst am: 09. März 2019 10:15    Titel: Antworten mit Zitat

Es wäre hilfreich gewesen, wenn du gezeigt hättest was du schon hast.

Parameterdarstellung Elipse:
https://de.wikipedia.org/wiki/Ellipse#Parameterdarstellungen
Drehmatrix:
https://de.wikipedia.org/wiki/Drehmatrix

Code:
% Radii
r1=2;
r2=1;
% Parameter
t=-pi:0.001:pi;
% rotierte Elipse
% du kannst auch den Winkel festlegen und dann x,y berechnen
% Winkel = pi/2;
% x = r1*cos(t)*cos(Winkel)-r2*sin(t)*sin(Winkel);
% y =  r1*cos(t)*sin(Winkel)+r2*sin(t)*cos(Winkel);
% so wird es mit t gemacht.
% die @(Winkel) Schreibweise macht aus x,y Funktionen vom
% Winkel, muss man aber nicht so machen
% x_plot = x(Winkel)
x = @(Winkel) r1*cos(t)*cos(Winkel)-r2*sin(t)*sin(Winkel);
y = @(Winkel) r1*cos(t)*sin(Winkel)+r2*sin(t)*cos(Winkel);

% Startwert soll 0 Grad Drehung sein, also außerhalb vom Loop
x_plot = x(0);
y_plot = y(0);

% Wäre gut wenn sich der Bildbereich nicht ändert, sieht besser aus
figure(1)
plot(x_plot,y_plot)
% also x und y Limits festlegen
xlim([-3 3])
ylim([-3 3])

% for loop, der muss nicht der Form i = 1:10 folgen
% kannst auch direkt über ein array laufen lassen, i.e.
% for Winkel = [0 1 2 3 4]
% oder eben
% for Winkel = 0:0.1:pi
for Winkel = 0:0.1:pi
x_plot = x(Winkel);
y_plot = y(Winkel);
plot(x_plot,y_plot)
TitelWinkel = rad2deg(Winkel);
title(strcat('Drehwinkel: ',num2str(TitelWinkel)));
% habe keine bessere Lösung auf Anhieb parat, man kann sicher
% die Achsen einmal festlegen und dann muss man sie nicht jedes Mal
% wieder festlegen wenn man updated, animiere aber nie in MATLAB
xlim([-3 3])
ylim([-3 3])
pause(0.5) % man will ja was sehen
drawnow
end



drehwinkel.gif
 Beschreibung:
 Dateigröße:  161.05 KB
 Angeschaut:  1123 mal

drehwinkel.gif


Henri



Anmeldungsdatum: 08.02.2014
Beiträge: 82

Beitrag Henri Verfasst am: 09. März 2019 15:58    Titel: Antworten mit Zitat

Hatte mit dem Handy gepostet und ohne weiteres da meinen Code nicht verfügbar. Vielen Dank! Das hilft mir ungemein weiter. Ich bin ewig nicht weiter gekommen, weil ich dachte ich muss mit einem Index arbeiten und wusste nicht wie ich diesen mit dem array verknüpfen kann. Jetzt funktioniert es.
moody_ds



Anmeldungsdatum: 29.01.2016
Beiträge: 515

Beitrag moody_ds Verfasst am: 09. März 2019 16:15    Titel: Antworten mit Zitat

Henri hat Folgendes geschrieben:
weil ich dachte ich muss mit einem Index arbeiten und wusste nicht wie ich diesen mit dem array verknüpfen kann. Jetzt funktioniert es.

Kein Problem Augenzwinkern Nur der vollständigkeithalber, wenn ich dein Problem richtig verstehe:

Seien die Winkeländerungen die du betrachten willst:

Code:
Winkel = [0 pi/4 pi/2 pi]


dann hättest du auch mit

Code:
for i = 1:size(Winkel,2)
wink = Winkel(i)
... cos(wink) ...
...
end


arbeiten können. Allerdings natürlich nicht so schön, wie das array direkt zu nehmen.
Neue Frage »
Antworten »
    Foren-Übersicht -> Sonstiges