Pagina 1 van 1

Matlab 3D animatie van mens

Geplaatst: za 05 apr 2014, 14:07
door cariaf
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:

 

Code: Selecteer alles

%% 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.

Re: Matlab 3D animatie van mens

Geplaatst: za 05 apr 2014, 14:51
door cariaf
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?

 

Code: Selecteer alles

%% 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;

Re: Matlab 3D animatie van mens

Geplaatst: zo 06 apr 2014, 16:27
door JorisL
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.

Re: Matlab 3D animatie van mens

Geplaatst: ma 07 apr 2014, 17:48
door cariaf
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?

Re: Matlab 3D animatie van mens

Geplaatst: di 08 apr 2014, 16:11
door JorisL
cariaf schreef: 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:

Code: Selecteer alles

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.