在Matlab中绘制3个变量的折线图



我有三个变量:pxpyt,它们分别表示x坐标、y坐标和时间。

我需要有一个二维折线图,以便可视化位置随时间的演变。我不需要画出确切的位置,也不知道物体的去向。我只是想直观地看到物体位置变化的轨迹和速度。例如,如果在t1和t2之间,对象保持静止,则直线将完全水平。如果它稍微移动,直线就会上升一点,如果它剧烈移动,直线的斜率也会上升很多。

换句话说,我需要一种方法,将两个位置坐标连接到一个单一的变量中,随着时间的推移进行绘图,但不会丢失它们给我的有意义的信息。

我曾尝试用plot3在3D中绘制信息,但它的可视化不够清晰,所以我决定改变我的方法,尝试只可视化对象轨迹变化的速度。

在下面的代码中,我计算了距离原点的距离,并将其与时间一起绘制出来。

distance=sqrt(px.^2+py.^2);
plot(t,distance);

如果这不能满足您的要求,请使用以下代码。在这个过程中,我计算了从一点(x,y)到下一点(x1,y1)的位移,并在前面添加了零,以使尺寸相同。然后求出累积和,这样当物体静止时就会得到一条水平线。

p=[px;py];
pd=p;
p(:,end)=[];
pd(:,1)=[];
p=[[0;0] p];
pd=[[0; 0] pd];
displacement=sqrt((pd(1,:)-p(1,:)).^2+(pd(2,:)-p(2,:)).^2);
cdisp=cumsum(displacement);
plot(t,cdisp); 

最新更新