2015-06-01 56 views
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/ 

澄清:

我正在尋找地點,其中瓦必須是零和不。這些將是我不踏板的地方(節奏= 0​​),也是我不移動的地方(連續距離相同的節點)。我已經糾正節奏= 0​​瓦數,但不知道如何找到連續<DistanceMeters>N</DistanceMeters>節點,其中N是不變的。

+0

什麼是你期望的輸出? –

+0

WR Watts應該在210到230瓦左右。它通常接近平均功率但更高。這是一種計算騎行感知力的手段,你有多努力工作。有關計算NP(或WR瓦特)的信息,請參閱http://www.endurancecorner.com/wko_definitions。 – B2K

+1

不知道你在做什麼。請描述你的問題,作爲一個程序員(在字符串,定義輸入和輸出),而不是騎自行車的人(我不知道節奏是什麼,或爲什麼它很重要)。你的問題中有兩種數據格式,我不清楚哪一個是你的輸入,也不知道另一個是什麼。你如何創建你的網頁?你是否手動編輯它?爲什麼不編寫腳本? gvim在你的工作流程中出現在哪裏? (你可以看到,我很困惑。)最後,我不知道你想用':g'來實現什麼。錯誤是合乎邏輯的捕獲不會將2個正則表達式 – Amadan

回答

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的?

+0

太棒了。原因是我想糾正異常情況,以便我可以重新上傳文件並獲得準確的統計數據。在40英里以上的自行車騎行中,就像在乾草堆中尋找針。沒有編寫一個程序來做到這一點,我想不出一個更適合這個任務的編輯。 – B2K