Matlab 计算速度的两种看似有效的方法得出了不同的答案

Matlab 计算速度的两种看似有效的方法得出了不同的答案,matlab,physics,kinematics,Matlab,Physics,Kinematics,我试图根据物体的X和Y坐标向量来计算物体的速度。最初,我使用了两种分量速度,然后使用毕达哥拉斯定理将它们相加mdcx和mdcy分别是x坐标和y坐标的向量 for i=2:length(mdcx) xdif(i)=mdcx(i-1)-mdcx(i); end xvel=(xdif/(1/60)); for i=2:length(mdcy) ydif(i)=mdcy(i-1)-mdcy(i); end yvel=(ydif/(1/60)); v=hypot(xvel,yvel

我试图根据物体的X和Y坐标向量来计算物体的速度。最初,我使用了两种分量速度,然后使用毕达哥拉斯定理将它们相加
mdcx
mdcy
分别是x坐标和y坐标的向量

for i=2:length(mdcx)
    xdif(i)=mdcx(i-1)-mdcx(i);
end

xvel=(xdif/(1/60));

for i=2:length(mdcy)
    ydif(i)=mdcy(i-1)-mdcy(i);
end

yvel=(ydif/(1/60));

v=hypot(xvel,yvel);
一位朋友提到这有多愚蠢,我意识到有一种更好的方法:

d = hypot(mdcx,mdcy);

for i = 2:length(d)
    v(i,1) = d(i)-d(i-1);
end

v = v/(1/60);
这一切都很好,除了这两种方法得到不同的答案,我不知道为什么。方法1的结果示例如下:

  • 3.39676316513232
  • 1.69387130561921
  • 1.21490740387897
  • 1.40071410359145
  • 0.702281994643187
  • 1.02703456611744
  • 0.933380951166206
以及方法2中的等效截面:

  • 3.00324976888577
  • 1.41904819171419
  • 0.473028796076438
  • 0.772429851826608
  • 0.126083801997687
  • 1.025748428026
  • 0.541889676174012
我的问题

我做错了什么?为什么这些结果不一样呢?这可能是一个愚蠢的错误,但我似乎不知道它是从哪里来的。我是否正确使用了
hypot


提前谢谢

正确的方法是第一个。速度是一个向量,因此您必须计算它的x,y分量,然后获得该向量的大小

第二种方法是减去距离的大小,这是不正确的。例如,在围绕坐标原点的圆周运动中,速度为零,这是错误的

总而言之:您正在处理向量。执行矢量减法,只在最后取幅值。差异的大小不同于大小的差异

顺便说一下,您可以使用以下方法对第一个方法进行矢量化(注意,这不会像您的方法那样在结果中给出初始零):


正确的方法是第一个。速度是一个向量,因此您必须计算它的x,y分量,然后获得该向量的大小

第二种方法是减去距离的大小,这是不正确的。例如,在围绕坐标原点的圆周运动中,速度为零,这是错误的

总而言之:您正在处理向量。执行矢量减法,只在最后取幅值。差异的大小不同于大小的差异

顺便说一下,您可以使用以下方法对第一个方法进行矢量化(注意,这不会像您的方法那样在结果中给出初始零):


在第一种情况下,您计算的是位置段差的长度。在第二种情况下,计算位置“长度”的差异

换句话说,如果给你3分
A
B
C
,第一种方法计算
AB
BC
的长度之差。然而,第二种方法计算
A
B
C
的长度差异


第一种方法是正确的;第二种方法是使用位置的“长度”,这实际上不是一个有效/有用的数字。

在第一种情况下,您计算的是位置段差异的长度。在第二种情况下,计算位置“长度”的差异

换句话说,如果给你3分
A
B
C
,第一种方法计算
AB
BC
的长度之差。然而,第二种方法计算
A
B
C
的长度差异


第一种方法是正确的;第二种方法是使用位置的“长度”,这实际上不是一个有效/有用的数字。

你能给我们看一下你的
hypot
代码吗?@DavidK这是一个Matlab函数,它将清理我的一些代码!你能给我们看看你的
hypot
代码吗?@DavidK这是一个Matlab函数,它会清理我的一些代码!谢谢你快速清晰的回答!高中物理课给我的印象是,速度=位移/时间,我现在可以看到,在这种情况下会出现问题。这在向量意义上是正确的。请记住,您处理的是向量,因此位移必须通过位置的向量减法来计算。为了得到快速而清晰的答案,请记住!高中物理课给我的印象是,速度=位移/时间,我现在可以看到,在这种情况下会出现问题。这在向量意义上是正确的。请记住,您处理的是向量,所以位移必须通过位置的向量减法来计算
v = hypot(diff(mdcx), diff(mdcy))*60;