gpt4 book ai didi

MATLAB 同时在单独的子图中绘制移动数据点

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:58 24 4
gpt4 key购买 nike

我希望在 MATLAB 中可视化数据点在一段时间内在空间中的移动。但是,我希望我的数字显示的方式是在任何给定时间只绘制一个瞬间。这很简单,我只是创建了一个 for 循环来更新数据中每组坐标 (x,y,z) 的 3D 绘图显示。但是,我希望始终显示该图的 4 个不同视角。我很清楚如何在 MATLAB 中设置子图,这不是问题所在。我的问题是让所有 4 个子图同时执行,以便所有 4 个子图始终显示相同的时间点。

如何处理这个问题?

根据要求,我的单图代码如下所示:

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

最佳答案

如果您使用 set 更新点的 x 和 y 数据,而不是每次都完全重新创建绘图,由于 Matlab 等待 drawnow<,更新将同时进行.

举个例子

figure,
subplot(1,2,1),plot(rand(10,1),rand(10,1),'.'),hold on,p1=plot(rand(1),rand(1),'.r')
subplot(1,2,2),plot(rand(10,1),rand(10,1),'.'),hold on,p2=plot(rand(1),rand(1),'.r')

%# read the red coordinates - I should have stored them before plotting :)
x(1) = get(p1,'xdata');y(1)=get(p1,'ydata');x(2)=get(p2,'xdata');y(2)=get(p2,'ydata');

%# animate
for i=1:100,
delta = randn(1,2)*0.01;
x=x+delta(1);
y=y+delta(2);
set(p1,'xdata',x(1),'ydata',y(1));
set(p2,'xdata',x(2),'ydata',y(2));
pause(0.1),
drawnow, %# I put this in case you take out the pause
end

关于MATLAB 同时在单独的子图中绘制移动数据点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13461929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com