代码之家  ›  专栏  ›  技术社区  ›  user20003920

如何对x y数据进行降采样?

  •  1
  • user20003920  · 技术社区  · 1 年前

    我有一个由42个x、y坐标组成的轨迹;

    我需要将这些坐标降采样为11个x、y点;

    只是想知道R中是否有一个函数可以为我做到这一点。

    数据为:

    横坐标

    x= c(1.07,0.98,0.90,0.81,0.73,0.65,0.57,0.49,0.41,0.33,0.25,0.17,0.1,0.01,-0.06,
         -0.14,-0.21,-0.28,-0.36,-0.43,-0.49,-0.54,-0.59,-0.63,-0.66,-0.69,-0.72,-0.73,
          -0.72,-0.70,-0.67,-0.64,-0.61,-0.63-0.64,-0.65,-0.65,-0.65,-0.65,-0.66,-0.66,
          -0.64)
    

    y坐标

    y=c(-0.11,-0.09,-0.10,-0.12,-0.13,-0.14,-0.19,-0.21,-0.22,-0.24,-0.26,-0.28,-0.30,
         -0.32,-0.34,-0.37,-0.41,-0.45,-0.50,-0.55,-0.61,-0.68,-0.76,-0.84,-0.92,-1.00,
         -1.08,-1.18,-1.28,-1.38,-1.47,-1.56,-1.61,-1.67,-1.73,-1.79,-1.85,-1.91,-1.96,
         -2.02,-2.07)
    
    1 回复  |  直到 1 年前
        1
  •  2
  •   Allan Cameron    1 年前

    功能 approx 允许您插值,因此假设您的点是以规则的时间间隔测量的,您可以将路径下采样为沿路径的11个规则测量点,如下所示:

    x2 <- approx(seq(0, 1, length = length(x)), x, xout = seq(0, 1, length = 11))$y
    y2 <- approx(seq(0, 1, length = length(y)), y, xout = seq(0, 1, length = 11))$y
    

    现在,如果绘制原始路径:

    plot(x, y, type = "l")
    

    enter image description here

    然后,您可以看到路径上的11个降采样点:

    points(x2, y2, col = 'red')
    

    enter image description here