Chciałbym wizualizować ruch punktu danych w przestrzeni przez pewien okres czasu w ramach MATLAB. Jednak sposób, w jaki chcę, aby moja postać była wyświetlana, jest taka, że w danym momencie wykreślana jest tylko jedna chwila. To było łatwe, po prostu utworzyłem pętlę for, aby zaktualizować mój wykres 3D dla każdego zestawu współrzędnych (x, y, z) w moich danych. Jednak chciałbym wyświetlać 4 różne kąty widzenia tego wykresu przez cały czas. Jestem świadomy, jak skonfigurować subplots w MATLAB, to nie jest problem. Mój problem polega na tym, aby wszystkie 4 wątki działały jednocześnie, tak aby wszystkie 4 wątki zawsze wyświetlały ten sam punkt w czasie.MATLAB rysuje ruchome punkty danych w osobnych partiach jednocześnie
Byłbym wdzięczny, gdyby ktoś mógł zasugerować, jak sobie z tym poradzić.
Zgodnie z wnioskiem, mój kod na postać z pojedynczym wykresie przedstawiono poniżej:
datan = DATA; %data in form of x,y,z,a,b,c by column for row# of time points
tib=zeros(size(datan,1),12);
tib(:,1:3) = datan(:,1:3);
tib_ref=tib(1,1:3);
for i=1:size(datan,1)
tib(i,1:3)=tib(i,1:3)-tib_ref;
end
angle_to_dircos
close all
figure('Name','Directions (Individual Cycles)','NumberTitle','off')
for cc=1:2
hold off
for bb=1:10:size(tib,1);
scatter3(tib(bb,1),tib(bb,2),tib(bb,3),'green','filled'); %z and y axes are flipped in polhemus system
hold on
p0 = [tib(bb,1),tib(bb,2),tib(bb,3)];
p1 = [tib(bb,1)+10*tib(bb,4),tib(bb,2)+10*tib(bb,5),tib(bb,3)+10*tib(bb,6)];
p2 = [tib(bb,1)+10*tib(bb,7),tib(bb,2)+10*tib(bb,8),tib(bb,3)+10*tib(bb,9)];
p3 = [-(tib(bb,1)+100*tib(bb,10)),-(tib(bb,2)+100*tib(bb,11)),-(tib(bb,3)+100*tib(bb,12))];
vectarrow(p0,p1,1,0,0)
hold on
vectarrow(p0,p2,0,1,0)
hold on
vectarrow(p0,p3,0,0,1)
hold on
az = 90;
el = 0;
view(az, el);
xlim([-50,50]);
ylim([-50,50]);
zlim([-50,50]);
xlabel('distance from center in X');
ylabel('distance from center in Y');
zlabel('distance from center in Z');
title('XYZ Scatter Plots of Tracker Position');
hold on
plot3(0,0,0,'sk','markerfacecolor',[0,0,0]);
p0 = [0,0,0];
p1 = [10,0,0];
p2 = [0,10,0];
p3 = [0,0,100];
vectarrow(p0,p1,1,0,0)
hold on
vectarrow(p0,p2,0,1,0)
hold on
vectarrow(p0,p3,1,0,1)
drawnow;
end
end
mógłbyś udostępnić swój kod na jednym rysunku, dzięki czemu możemy lepiej zrozumieć, co chce zrobić? – HebeleHododo
Byłbym szczęśliwy. Jednak mój kod jest zbyt długi dla tej sekcji komentarzy. Czy istnieje lepszy sposób na udostępnianie kodu tutaj? –
Możesz edytować swój wpis? – HebeleHododo