【发布时间】:2016-04-20 12:30:52
【问题描述】:
首先让我说我怀疑这是一个非常简单的解决方案,我几乎没有错过它。
我正在尝试编写一个脚本,该脚本将在四个单独的子图中绘制一组数据(每个子图中显示点正在绘制的 3D 形状的不同视图),但我只想显示当前点 -例如,我不想看到每一个点,只是随着时间的推移而看到一组点(我正在捕捉情节的视频以可视化随时间的运动)。但是,对于每个瞬间,有 n 个点要同时绘制。我知道这应该很简单,但我无法一次绘制所有 n 点 - 我似乎只能让它一次绘制一个点,这在您有 n 个标记随时间移动,您希望看到所有这些标记同时移动。
以下代码用于按顺序绘制每个点,但不会将所有 n 个点绘制在一起,而是为每个 t 刷新这些点:
n = 0;
for i = 1:length(data)
% every marker occurs in one row of a specific set of data, and is split
% into x, y, z, so I correct here for each marker being every 3rd column
for j = 1:(cind/3) % cycle through every marker
x = markerLoc(i, j*3 - 2);
y = markerLoc(i, j*3 - 1);
z = markerLoc(i, j*3);
if j == 1 && i == 1 % set up the initial plots for each subplot
% s1,2,3,4 are the handles for the subplots
h1 = scatter3(s1,x, y, z, 'MarkerFaceColor', [0 .75 .75],...
'MarkerEdgeColor','k');
h2 = scatter3(s2,x, y, z, 'MarkerFaceColor', [0 .75 .75],...
'MarkerEdgeColor','k');
h3 = scatter3(s3,x, y, z, 'MarkerFaceColor', [0 .75 .75],...
'MarkerEdgeColor','k');
h4 = scatter3(s4,x, y, z, 'MarkerFaceColor', [0 .75 .75],...
'MarkerEdgeColor','k');
else % update data
% this is probably insanely redundant
set(h1, 'XData', x, 'YData', y, 'ZData', z);
set(h2, 'XData', x, 'YData', y, 'ZData', z);
set(h3, 'XData', x, 'YData', y, 'ZData', z);
set(h4, 'XData', x, 'YData', y, 'ZData', z);
end
end
frames(n) = getframe(gcf); % capture frames
n = n + 1;
end
谁能帮我找到我需要在此处更改以使其绘制的内容,而不是在每个 j(单个标记)之后,在第 n 个 j 之后?
【问题讨论】:
标签: matlab