Springen naar inhoud

Matlab 3D animatie van mens


  • Log in om te kunnen reageren

#1

cariaf

    cariaf


  • 0 - 25 berichten
  • 4 berichten
  • Gebruiker

Geplaatst op 05 april 2014 - 13:07

Hoi allemaal,
k probeer een 3D animatie van een mens te maken maar kom er niet helemaal uit. Dit heb ik tot dusver maar het leidt niet tot het resultaat zoals ik het wil:
 

%% clear memory
clear;
close all;
%% Data
data = importdata('gait100.txt');
%% Settings
nTime = max(size(data.data(:,2)));
%creating seperate X, Y and Z matrices
X = data.data(:, [1 : 3 : 123]); % Creates matrix from all x-positions
Y = data.data(:, [2 : 3 : 123]); % Creates matrix from all y-positions
Z = data.data(:, [3 : 3 : 123]); % Creates matrix from all z-positions
%% animation
for i = 1: nTime
cla;
plot3(X(i,:), Y(i,:), Z(i,:),'o');
drawnow;
end
hold off;

Ik heb het tekst bestand met de posities ook geupload.

Bijgevoegde Bestanden

Veranderd door Xenion, 09 april 2014 - 06:44
code opmaak gefixed


Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

cariaf

    cariaf


  • 0 - 25 berichten
  • 4 berichten
  • Gebruiker

Geplaatst op 05 april 2014 - 13:51

EDIT
het is me gelukt om er iets meer van te maken maar ik vind de 3D plot nog steeds niet erg mooi. Daarnaast, vind ik het ook moeilijk om te zien welke as nou x y of z is in de 3D plot. Ik zou graag de grootste afstand tussen de voeten willen berekenen, welke as moet ik hier dan voor pakken?
 

%% clear memory
clear;
close all;
%% Data
data = importdata('gait100.txt');
%% Settings
nTime = max(size(data.data(:,2)));
% creating seperate X, Y and Z matrices
X = data.data(:, [1 : 3 : 123]); % Creates matrix from all x-positions
Y = data.data(:, [2 : 3 : 123]); % Creates matrix from all y-positions
Z = data.data(:, [3 : 3 : 123]); % Creates matrix from all z-positions
% creating min and max for X, Y and Z
Xmax = max(max(X));
Ymax = max(max(Y));
Zmax = max(max(Z));
Xmin = min(min(X));
Ymin = min(min(Y));
Zmin = min(min(Z));
%% 3D-animation
axis([Xmin Xmax Ymin Ymax Zmin Zmax]);
for iLoop = 1 : 10;
for i = 1: nTime
hold on;
cla;
plot3(X(i,:), Y(i,:), Z(i,:),'o');
drawnow;
end
end
hold off;
%% 2D-animation
axis([-1000 1000 0 2000]);
for iLoop = 1 : 10;
for i = 1: nTime
hold on;
cla;
plot(Y(i,:), Z(i,:),'o');
drawnow;
end
end
hold off;

Veranderd door Xenion, 09 april 2014 - 06:45
code opmaak gefixed


#3

JorisL

    JorisL


  • >250 berichten
  • 555 berichten
  • Ervaren gebruiker

Geplaatst op 06 april 2014 - 15:27

Voor de assen, xlabel('X'); geeft een label op de X-as.

Zo bestaat er ook ylabel en zlabel.

 

Ik zou trouwens aanraden om ergens anders een animatie mee te maken. Ikzelf heb het ooit geprobeerd met een simpele Lennard-Jones vloeistof.

Het is heel traag naar mijn mening.


#4

cariaf

    cariaf


  • 0 - 25 berichten
  • 4 berichten
  • Gebruiker

Geplaatst op 07 april 2014 - 16:48

Ik moet dit helaas met matlab doen voor een tentamen.. Met die assen is het nu gelukt, dankje! Weet je hoe ik in de datasheet (zonder het zelf op te gaan zoeken in de figure) kan uitvinden welke datakolom bij welke marker hoort?

Veranderd door cariaf, 07 april 2014 - 16:51


#5

JorisL

    JorisL


  • >250 berichten
  • 555 berichten
  • Ervaren gebruiker

Geplaatst op 08 april 2014 - 15:11

Ik moet dit helaas met matlab doen voor een tentamen.. Met die assen is het nu gelukt, dankje! Weet je hoe ik in de datasheet (zonder het zelf op te gaan zoeken in de figure) kan uitvinden welke datakolom bij welke marker hoort?

 

Ik snap je tweede vraag niet meteen. In je plot heb je voor elk punt (X,Y,Z) dezelfde marker (open bolletje lijkt me).

 

Wat is de vorm van je data bestand? Kan je ook meteen even uitleggen wat je bijvoorbeeld met volgend commando doet:

X = data.data(:, [1 : 3 : 123]);

 

Op deze manier kom ik er niet echt uit, ik genereerde mijn data altijd in matlab zelf daarmee.

Ik vermoed dat je X,Y en Z multidimensionale arrays zijn maar ben niet meteen zeker.






0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures