我想模拟跟踪已知路径的车辆,我正在处理的只是在路径上移动的动画形状,我在matlab下编写了我的代码我得到了正方形(代表车辆)移动到路径,但是,我想删除最后的方块(记忆),每次只需要一个正方向的方格。 有人请告诉我我能做些什么来实现这一目标。 我的代码说明了我之前解释的内容:
r=0.25; t=0:0.1:10; A=100; yo=A*sin(t);%%desired output position on Y axe Voy=diff( yo); Vox=ones(1,101); Voy(length(Voy)+1)=Voy(length(Voy)) Vmx=sqrt(Voy.*Voy+Vox.*Vox); theta=atan(Voy./Vox); %%Speed's equations Voy=Vmx.*sin(theta); Vox=Vmx.*cos(theta); x=0; y=0; t=0; for i=1:1:length(Voy); x=Vox(i)*(t); y=Voy(i)*0.1; pause(0.05) t=t+0.1; plot(x,y,'--gs',... 'LineWidth',2,... 'MarkerSize',30,... 'MarkerEdgeColor','b',... 'MarkerFaceColor',[0.5,0.5,0.5]) hold on end
答案 0 :(得分:1)
我认为以下代码可以满足您的需求:
r=0.25;
t=0:0.1:10;
A=100;
yo=A*sin(t);%%desired output position on Y axe
Voy=diff( yo);
Vox=ones(1,101);
Voy(length(Voy)+1)=Voy(length(Voy))
Vmx=sqrt(Voy.*Voy+Vox.*Vox);
theta=atan(Voy./Vox);
%%Speed's equations
Voy=Vmx.*sin(theta);
Vox=Vmx.*cos(theta);
x=0;
y=0;
t=0;
figure;
ph = plot(x,y,'--gs',...
'LineWidth',2,...
'MarkerSize',30,...
'MarkerEdgeColor','b',...
'MarkerFaceColor',[0.5,0.5,0.5]);
set(gca,'XLim',[0 10]);
set(gca,'YLim',[-2 2]);
for i=1:1:length(Voy);
x=Vox(i)*(t);
y=Voy(i)*0.1;
set(ph,'XData',x);
set(ph,'YData',y);
pause(0.05)
t=t+0.1;
end
诀窍是,使用绘图的句柄来更新for循环中的数据。这可以通过更改plot-object的XData
和YData
属性来完成:
set(ph,'XData',x);
set(ph,'YData',y);
此外,我会手动设置轴的X和y限制
set(gca,'XLim',[0 10]);
set(gca,'YLim',[-2 2]);
否则根据当前数据动态设置,分几步设置。