sRMatTemp = [SENSORRANGE];
sRMat = repmat(sRMatTemp, size(obj.landmarks.sensed(:,1), 1));
ellipse(((2*pi*sRMat)/(360/obj.landmarks.sensed(:,4))), obj.landmarks.sensed(:,5) , obj.landmarks.sensed(:,3), obj.landmarks.apparentPositionsST(:,1), obj.landmarks.apparentPositionsST(:,2));
上面的代码工作正常... ONCE。问题是我需要动画它。每次我绘制椭圆时,它们都会停留在我的屏幕上,图形会立即变得不可读。
这是上面的代码也可以正常工作,为散点图设置动画。有没有办法可以用椭圆形来使用它?
我正在使用Mathworks社区网站上的ellipse.m。
fig=figure;
axes('NextPlot','add');
set(fig, 'name', 'Animated Graph')
l.st=scatter([0],[0],'g.');
set(l.st,'XData',obj.landmarks.apparentPositionsST(:,1),'YData',obj.landmarks.apparentPositionsST(:,2));
drawnow
答案 0 :(得分:2)
您需要将EraseMode
属性设置为xor
,以便在更新其X / Y数据时,它会删除旧位置,然后重绘。请务必阅读此animation guide。
我写了一个简单的例子来说明动画椭圆。我在SO上使用上一个问题中的calculateEllipse.m函数。
step = linspace(50,200,100);
figure
hAx = axes('XLim',[-250 250], 'YLim',[-250 250], ...
'Drawmode','fast', 'NextPlot','add');
axis(hAx, 'equal')
p = calculateEllipse(0, 0, step(1), step(end), step(1));
hLine = line('XData',p(:,1), 'YData',p(:,2), 'EraseMode','xor', ...
'Color','r', 'LineWidth',3);
for i=1:numel(step)
p = calculateEllipse(0, 0, step(i), step(numel(step)-i+1), step(i));
set(hLine,'XData',p(:,1), 'YData',p(:,2)) %# update X/Y data
pause(.05) %# slow down animation
drawnow %# force refresh
if ~ishandle(hLine), return; end %# in case you close the figure
end