我是一名自行车手和程序员。在骑行过程中,我使用基于手机的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),也是我没有移动的地方(相同的连续距离节点)。我已经纠正了瓦数的节奏= 0,但不知道如何找到连续的<DistanceMeters>N</DistanceMeters>
节点,其中N不变。
只要有足够的决心,这是可以做到的:
:%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中这样做呢?