Normalisierte Leistung Rechner
Eine völlig gleichmäßige Fahrt mit 200 W hat eine normalisierte Leistung von 200 W und einen Variabilitätsindex von 1, während Antritte und Anstiege sie über den Durchschnitt heben. Fügen Sie die Leistungswerte Ihrer Fahrt ein und sehen Sie die echte Belastung. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Fenster
- 30
- N
- 40
- Anzahl gleitender Mittelwerte
- 11
- Durchschnittsleistung
- 200
- Normalisierte Leistung
- 200
Normalisierte Leistung (Normalized Power, NP) ist die Trainingslast-Kennzahl, die Radfahrer und Trainer nutzen, wenn die Durchschnittswatt harte Spitzen verdecken. Eine flache Fahrt mit 200 W und eine mit derselben Mittelwatt, aber wiederholten Ausreißern, kosten physiologisch nicht dasselbe; NP gewichtet die Serie mit einem gleitenden Mittel hoch vier um, sodass variable Belastungen höher bewerten als gleichmäßige. Dieser Normalisierte-Leistung-Rechner nimmt eine geordnete Liste positiver Leistungswerte entgegen — typischerweise Ein-Hertz-Export des Leistungsmessers —, wendet ein nachlaufendes Gleitfenster an (standardmäßig dreißig Samples, das klassische Dreißig-Sekunden-Fenster bei einem Hertz), mittelt die vierten Potenzen dieser Gleitmittel und liefert die vierte Wurzel als NP in Watt, zusammen mit der Durchschnittsleistung und dem Variabilitätsindex NP geteilt durch die Durchschnittsleistung.
Was normalisierte Leistung bedeutet und warum die vierte Potenz vorkommt
Die Durchschnittsleistung ist das arithmetische Mittel jedes Watt-Samples der Fahrt. Sie ist leicht zu erklären und leicht zu verzerren: Freilauf, Windschatten und kurze Erholungen ziehen den Mittelwert nach unten, während kurze anaerobe Sprints ihn kaum bewegen. Normalisierte Leistung wurde so entworfen, dass eine Fahrt mit denselben Mittelwatts, aber variableren Anstrengungen, eine höhere Punktzahl erhält, die metabolische Kosten und empfundenen Stress besser abbildet.
Das Verfahren wendet nach Vorliegen der Samples drei nichtlineare Schritte an. Zuerst wird jedes Sample durch ein nachlaufendes gleitendes Mittel über ein kurzes Fenster ersetzt — klassisch dreißig Sekunden bei einem Hertz —, damit Einzelsample-Spitzen zu Belastungen geglättet werden, die der Körper wirklich spürt. Zweitens werden diese Gleitmittel in die vierte Potenz erhoben.
Diese Gewichtung verstärkt hohe Gleitmittel stark gegenüber niedrigen; deshalb dominieren Rucke und Anstiege die NP, während lockeres Treten weit weniger beiträgt. Drittens wird der Mittelwert dieser vierten Potenzen gebildet und die vierte Wurzel stellt die Einheit Watt wieder her. Das Ergebnis ist eine einzige Zahl, oft etwas über der Durchschnittsleistung im welligen Gelände und nahezu gleich der Durchschnittsleistung auf einem gleichmäßigen Ergometerblock.
Der Variabilitätsindex ist einfach NP geteilt durch die Durchschnittsleistung: Werte nahe eins bedeuten eine glatte Belastung; Werte deutlich über eins bedeuten eine stoßige Datei. Dieser Rechner setzt diese Pipeline deterministisch um — ohne FTP, ohne Online-Karte und ohne Zonen-Datenbank, nur mit der Serie, die Sie liefern, und einer optionalen Fensterlänge.
Anwendungsfälle
Prüfung von Renn- und Trainingsdateien
Fügen Sie eine Ein-Hertz-Leistungsserie aus einem Rennen oder einer Indoor-Einheit ein oder laden Sie sie hoch und vergleichen Sie normalisierte Leistung, Durchschnittsleistung und Variabilitätsindex, um zu beurteilen, wie stoßig die Belastung war.
Lehre und reproduzierbare Notebooks
Zeigen Sie Studierenden, warum die Gewichtung mit der vierten Potenz variable Belastungen über gleichmäßige Fahrten hebt, indem Sie dieselbe Serie in einem deterministischen NP-Orakel im Unterricht oder in CI ausführen.
Häufige Fragen
Wie wird die normalisierte Leistung aus einer Leistungsserie berechnet?
Bilden Sie ein nachlaufendes gleitendes Mittel der Länge window (standardmäßig 30 Samples), erheben Sie jedes Gleitmittel in die vierte Potenz, mitteln Sie diese vierten Potenzen und ziehen Sie die vierte Wurzel. Diese vierte Wurzel ist die NP in Watt.
Welche Eingaben verlangt der Normalisierte-Leistung-Rechner?
Ein nicht leeres powers-Array endlich streng positiver Watt. Die Serienlänge muss mindestens dem Fenster entsprechen.
Was ist der Variabilitätsindex?
Werte nahe 1 zeigen eine glatte Belastung; höhere Werte zeigen eine variabelere, stoßigere Datei.
Welches gleitende Fenster sollte ich verwenden?
Behalten Sie die Voreinstellung von 30 Werten, also das klassische 30-Sekunden-Fenster bei einem Wert pro Sekunde. Hat Ihre Datei zwei Werte pro Sekunde, nehmen Sie 60 für dieselbe Zeitspanne. Die Reihe muss mindestens so viele Werte haben wie das Fenster.
Darf meine Leistungsdatei Nullen vom Rollen enthalten?
Nein. Jeder Wert muss größer als null sein, daher werden Nullen vom Rollenlassen und negative Ausreißer abgelehnt, und die Meldung nennt die Position des fehlerhaften Werts. Entfernen oder korrigieren Sie diese vor der Berechnung.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/health/normalized-power \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"powers":[180,200,220,190,210,250,240,200,180,170,160,200,230,250,220,200,190,180,200,210,220,240,230,200,180,170,160,150,200,250,240,220,200,180,190,210,200,190,180,200]}'const res = await fetch("https://api.kit.forhosting.com/health/normalized-power", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"powers": [
180,
200,
220,
190,
210,
250,
240,
200,
180,
170,
160,
200,
230,
250,
220,
200,
190,
180,
200,
210,
220,
240,
230,
200,
180,
170,
160,
150,
200,
250,
240,
220,
200,
180,
190,
210,
200,
190,
180,
200
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/normalized-power",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"powers": [
180,
200,
220,
190,
210,
250,
240,
200,
180,
170,
160,
200,
230,
250,
220,
200,
190,
180,
200,
210,
220,
240,
230,
200,
180,
170,
160,
150,
200,
250,
240,
220,
200,
180,
190,
210,
200,
190,
180,
200
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/normalized-power", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"powers":[180,200,220,190,210,250,240,200,180,170,160,200,230,250,220,200,190,180,200,210,220,240,230,200,180,170,160,150,200,250,240,220,200,180,190,210,200,190,180,200]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"powers":[180,200,220,190,210,250,240,200,180,170,160,200,230,250,220,200,190,180,200,210,220,240,230,200,180,170,160,150,200,250,240,220,200,180,190,210,200,190,180,200]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/normalized-power", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"powers": [
180,
200,
220,
190,
210,
250,
240,
200,
180,
170,
160,
200,
230,
250,
220,
200,
190,
180,
200,
210,
220,
240,
230,
200,
180,
170,
160,
150,
200,
250,
240,
220,
200,
180,
190,
210,
200,
190,
180,
200
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.normalized_power",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Ungültige oder nicht positive Samples scheitern mit invalid_input und werden nicht berechnet.
Eingabevertrag, Fensterlänge, Antwortform und Fehler
Die Reihenfolge zählt: Sample null ist der Serienanfang und das letzte Sample das Ende. Typische Messerexporte liefern ein Sample pro Sekunde; ist die Datei neu abgetastet, halten Sie das Fenster konsistent zur Abtastrate (dreißig Samples bei einem Hertz entsprechen dreißig Sekunden; sechzig bei zwei Hertz decken dasselbe physische Fenster ab). Das optionale Fenster ist standardmäßig dreißig und muss eine ganze Zahl von eins bis dreitausendsechshundert sein; die Serienlänge muss mindestens dem Fenster entsprechen, damit mindestens ein volles nachlaufendes Mittel existiert. Die optionale precision setzt Dezimalstellen der Ausgabe von null bis zwölf, Standard vier. Numerische Strings, die als endliche Dezimalzahlen parsen, werden akzeptiert, damit CSV-Einfügen ohne separaten Parse-Schritt funktioniert. Senden Sie einen JSON-Body mit powers, einem nicht leeren Array endlich streng positiver Zahlen in Watt. Bei Erfolg liefert der Body n (Sample-Anzahl), window, rolling_count (wie viele nachlaufende Mittel gebildet wurden), average_power, normalized_power, variability_index und eine kurze Formelzeichenkette. Jedes Sample muss streng positiv sein: Nullen aus dem Freilauf, negative Glitches, NaN oder nicht numerische Strings scheitern mit invalid_input und benennen den fehlerhaften Index. Ein leeres Array, ein fehlendes powers-Feld, eine Serie kürzer als das Fenster oder Fenster bzw. precision außerhalb des Bereichs scheitern ebenfalls. Diese Validierungsfehler werden nicht berechnet. Begrenzen Sie die Anfrage auf hunderttausend Samples, damit Edge-Worker günstig bleiben; längere Fahrten können offline neu abgetastet oder geteilt werden, bevor der Endpoint aufgerufen wird.
Wo ein Normalisierte-Leistung-Rechner Nutzen stiftet
Datenjournalisten und Sportwissenschafts-Notebooks brauchen ein reproduzierbares Orakel für Artikel, die erklären, warum zwei Mittelwerte von zweihundert Watt sich unterschiedlich anfühlen; goldene Beispiele an dieses reine Modul zu koppeln hält Diagramme über Sprachen und Runtimes ehrlich. Fehlgeschlagene Validierung wird nicht abgerechnet. Halten Sie die Serie positiv, wählen Sie ein Fenster passend zur Abtastrate, und Sie erhalten stabile NP und Variabilitätsindex für Coaching-Berichte, LMS-Labore und Edge-Worker, ohne selbst einen kompletten Trainingsanalyse-Stack aufzubauen. Trainer prüfen Renn- und Indoor-Dateien, indem sie NP und Durchschnittsleistung nebeneinander vergleichen: Ein Kriterium mit denselben Mittelwatts wie ein Tempo-Block sollte höhere NP und höheren Variabilitätsindex zeigen, und dieser Endpoint liefert dieses Paar ohne eine komplette Analyse-Suite. Trainingsplattformen und Amateur-Veranstalter können die API per Webhook aufrufen, sobald ein FIT oder CSV eintrifft, NP neben der Dauer speichern und Anstrengungen fairer als nur über die Durchschnittsleistung ranken. Weil die Implementierung reines Parse-Tier-A ist, kostet jeder erfolgreiche Aufruf den veröffentlichten Basispreis $0.002 ohne Modell-Tokens und ohne ausgehendes Netz.
Integrationsbeispiele
Webhooks von Trainingsplattformen
Sobald ein FIT oder CSV eintrifft, rufen Sie die API mit dem Watt-Array auf und speichern Sie NP neben der Dauer, damit Ranglisten und Last-Diagramme nicht nur von der Mittelwatt abhängen.
Technische Fragen
Warum werden Nullen und negative Watt abgelehnt?
Dieser Endpoint verlangt streng positive Samples, damit NP ohne ad-hoc-Nullbehandlung wohldefiniert ist. Freilauf-Nullen sollten vorgeschaltet gefiltert oder ersetzt werden; es wird invalid_input zurückgegeben und nicht berechnet.
Was kostet der Normalisierte-Leistung-Rechner?
Das Browser-Tool ist kostenlos. API-Anfragen nutzen vorausbezahltes KIT-Guthaben zu $0.002 pro erfolgreichem Aufruf; ungültige Eingaben werden nicht berechnet.