2

我是一名自行车手和一名程序员。在我的骑行过程中,我使用基于手机的 gps 跟踪器和功率计将数据记录到 xml 文件中。骑行结束后,我使用功率计软件合并数据,然后上传到网站。在网站上,结果数据显示 WR 瓦特的数据非常不准确(这是一个加权平均值,也称为归一化功率,根据定义,它高于平均功率,低于我记录的最大瓦特。见http://ridewithgps .com/trips/4834566(导出 TCX 历史以获取我所指的文件)。/<Watts>\d{4,}不返回任何结果。

Calories:   1809
Max Watts:  676
Avg. Watts: 213 (170 with 0s)
WR Power    23487
Work    1681 kJ
Max Speed:  26.2 mph
Avg. Speed: 16.6 mph

以下是 tcx 历史文件中的两个示例读数。

      <Trackpoint>
        <Time>2015-05-30T11:35:50Z</Time>
        <Position>
          <LatitudeDegrees>41.96306</LatitudeDegrees>
          <LongitudeDegrees>-87.645939</LongitudeDegrees>
        </Position>
        <AltitudeMeters>177.7</AltitudeMeters>
        <DistanceMeters>71.5</DistanceMeters>
        <Cadence>67</Cadence>
        <Extensions>
          <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
            <Watts>104</Watts>
          </TPX>
        </Extensions>
      </Trackpoint>
      <Trackpoint>
        <Time>2015-05-30T11:35:51Z</Time>
        <Position>
          <LatitudeDegrees>41.963076</LatitudeDegrees>
          <LongitudeDegrees>-87.646094</LongitudeDegrees>
        </Position>
        <AltitudeMeters>178.0</AltitudeMeters>
        <DistanceMeters>75.7</DistanceMeters>
        <Cadence>67</Cadence>
        <Extensions>
          <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
            <Watts>156</Watts>
          </TPX>
        </Extensions>
      </Trackpoint>

我已经查看了每个条目<Watts>\d*</Watts>中相应的 Cadence 为零(如果我不踩踏板,瓦特应该为零)。

:g/<Cadence>0/.,+3s/<Watts>[1-9]\d*/<Watts>0/c

但这并没有解决问题。我的下一步是查找跟踪点之间的距离没有变化并且包含大于零的瓦数的条目。这将返回 E65:非法反向引用

:g/<DistanceMeters>\(\d*\)/+1,+15s/<DistanceMeters>\1/

澄清:

我正在寻找瓦特必须为零且不是的位置。这些将是我不踩踏板的地方(Cadence = 0)以及我不移动的地方(相同的连续距离节点)。我已经更正了 cadence = 0 的功率,但不知道如何找到<DistanceMeters>N</DistanceMeters>N 不变的连续节点。

4

1 回答 1

4

只要有足够的决心,就可以做到:

:%s/\m<DistanceMeters>\([0-9.]\+\)<\/DistanceMeters>\n\(.*\n\)\{1,15}\s\+<DistanceMeters>\1<\/DistanceMeters>\n\(.*\n\)\{3}\s\+<Watts>\zs[1-9]\d*\ze<\/Watts>/0/gc

然而,你到底为什么要在 Vim 中这样做呢?

于 2015-06-01T05:17:59.860 回答