Calculadora de potencia normalizada
Una salida perfectamente constante a 200 W da una potencia normalizada de 200 W y un índice de variabilidad de 1; los cambios de ritmo y las subidas la elevan sobre la media. Pegue los datos de potencia de su salida y vea su carga real. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Ventana
- 30
- N
- 40
- Cantidad de promedios móviles
- 11
- Potencia media
- 200
- Potencia normalizada
- 200
La potencia normalizada (Normalized Power, NP) es la métrica de carga de entrenamiento que ciclistas y entrenadores usan cuando los vatios medios ocultan picos duros. Un recorrido plano a 200 W y otro con la misma media pero rachas repetidas no cuestan lo mismo a nivel fisiológico; la NP repondera la serie con una media móvil elevada a la cuarta potencia para que los esfuerzos variables puntúen más que los estables. Esta calculadora de potencia normalizada acepta una lista ordenada de muestras de potencia positivas —habitualmente exportaciones de potenciómetro a un hercio—, aplica una ventana móvil de cola (treinta muestras por defecto, la clásica de treinta segundos a un hercio), promedia las cuartas potencias de esas medias y devuelve la raíz cuarta como NP en vatios, junto con la potencia media y el índice de variabilidad NP entre potencia media.
Qué significa la potencia normalizada y por qué aparece la cuarta potencia
La potencia media es la media aritmética de cada muestra de vatios del recorrido. Es fácil de explicar y de forzar: el coasting, el rebufo y las recuperaciones breves bajan la media mientras los sprints anaeróbicos apenas la mueven. La potencia normalizada se diseñó para que un recorrido con los mismos vatios medios pero más esfuerzos variables reciba una puntuación más alta, más fiel al coste metabólico y al estrés percibido.
El método aplica tres pasos no lineales una vez que tiene las muestras. Primero, cada muestra se sustituye por una media móvil de cola en una ventana corta —clásicamente treinta segundos con muestreo a un hercio— para suavizar picos de una sola muestra en esfuerzos que el cuerpo sí nota. Segundo, esas medias móviles se elevan a la cuarta potencia.
Esa ponderación amplifica con fuerza las medias altas frente a las bajas, por eso los cambios de ritmo y las subidas dominan la NP mientras el pedaleo suave aporta mucho menos. Tercero, se toma la media de esas cuartas potencias y la raíz cuarta devuelve las unidades a vatios. El resultado es un solo número, a menudo un poco por encima de la potencia media en terreno variable y casi igual a ella en un bloque ergométrico estable.
El índice de variabilidad es simplemente NP entre potencia media: valores cercanos a uno indican un esfuerzo suave; valores claramente por encima de uno indican un archivo con muchos picos. Esta calculadora implementa ese flujo de forma determinista, sin FTP, sin mapa en línea y sin base de zonas de entrenamiento: solo la serie que usted aporta y una longitud de ventana opcional.
Contrato de entrada, longitud de ventana, forma de la respuesta y errores
El orden importa: la muestra cero es el inicio de la serie y la última es el final. Las exportaciones típicas del potenciómetro son una muestra por segundo; si el archivo está remuestreado, mantenga la ventana coherente con su frecuencia (treinta muestras a un hercio equivalen a treinta segundos; sesenta a dos hercios cubren la misma ventana física).
La ventana opcional vale treinta por defecto y debe ser un entero entre uno y tres mil seiscientos; la longitud de la serie debe ser al menos la ventana para que exista al menos una media de cola completa. La precisión opcional fija decimales de salida de cero a doce, con valor por defecto cuatro. Un array vacío, un campo powers ausente, una serie más corta que la ventana, o una ventana o precisión fuera de rango también fallan.
Esas fallas de validación no se facturan. Se aceptan cadenas numéricas que parsean como decimales finitos para poder pegar CSV sin un paso de parseo aparte.
Qué puede hacer con ella
Revisión de archivos de carrera y entrenamiento
Pegue o cargue una serie de potencia a un hercio de una carrera o sesión indoor y compare potencia normalizada, potencia media e índice de variabilidad para juzgar cuán irregular fue el esfuerzo.
Docencia y cuadernos reproducibles
Muestre a los alumnos por qué la ponderación a la cuarta eleva esfuerzos variables por encima de rodajes estables ejecutando la misma serie en un oráculo NP determinista en clase o en CI.
Preguntas frecuentes
¿Cómo se calcula la potencia normalizada a partir de una serie de potencia?
Tome una media móvil de cola de longitud window (30 muestras por defecto), eleve cada media a la cuarta potencia, promedie esas cuartas potencias y tome la raíz cuarta. Esa raíz cuarta es la NP en vatios.
¿Qué entradas exige la calculadora de potencia normalizada?
Un array powers no vacío de vatios finitos estrictamente positivos. Ventana opcional (30 por defecto) y precisión (4 por defecto). La longitud de la serie debe ser al menos la ventana.
¿Qué es el índice de variabilidad?
Valores cercanos a 1 indican un esfuerzo suave; valores más altos indican un archivo más variable y con más picos.
¿Qué ventana móvil debo usar?
Mantenga la ventana por defecto de 30 muestras, que equivale a los 30 segundos clásicos en un archivo con una muestra por segundo. Si su archivo tiene dos muestras por segundo, use 60 para cubrir el mismo tiempo. La serie debe tener al menos tantas muestras como la ventana.
¿Puede mi archivo de potencia contener ceros por ir sin pedalear?
No. Cada muestra debe ser mayor que cero, así que los ceros de las bajadas sin pedalear y los valores negativos se rechazan, y el mensaje indica la posición de la muestra errónea. Elimínelos o corríjalos antes de calcular.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"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
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.normalized_power",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Las muestras inválidas o no positivas fallan con invalid_input y no se facturan.
Contrato de entrada, longitud de ventana, forma de la respuesta y errores
Envíe un cuerpo JSON con powers, un array no vacío de números finitos estrictamente positivos en vatios. En caso de éxito el cuerpo devuelve n (número de muestras), window, rolling_count (cuántas medias de cola se formaron), average_power, normalized_power, variability_index y una cadena breve de fórmula. Cada muestra debe ser estrictamente positiva: ceros por coasting, glitches negativos, NaN o cadenas no numéricas fallan con invalid_input indicando el índice erróneo. Limite la petición a cien mil muestras para que los workers de borde sigan baratos; recorridos más largos pueden remuestrearse o partirse sin conexión antes de llamar al endpoint.
Dónde aporta valor una calculadora de potencia normalizada
La validación fallida no consume saldo. Mantenga la serie positiva, elija una ventana acorde a su frecuencia de muestreo y obtendrá NP e índice de variabilidad estables para informes de coaching, laboratorios LMS y workers de borde sin montar usted mismo un stack completo de análisis de entrenamiento. Los entrenadores revisan archivos de carrera y sesiones indoor comparando NP y potencia media en paralelo: un criterium con los mismos vatios medios que un bloque tempo debería mostrar NP e índice de variabilidad más altos, y este endpoint entrega ese par sin abrir un suite completo de analítica. Plataformas de entrenamiento y organizadores amateurs pueden llamar a la API desde un webhook cuando llega un FIT o CSV, guardar la NP junto a la duración y ordenar esfuerzos con más equidad que solo con la media. Como la implementación es parse de nivel A pura, cada llamada correcta cuesta el precio base publicado $0.002 sin tokens de modelo ni red saliente.
Casos de integración
Webhooks de plataformas de entrenamiento
Cuando llega un FIT o CSV, llame a la API con el array de vatios y almacene la NP junto a la duración para que clasificaciones y gráficos de carga no dependan solo de la media.
Preguntas técnicas
¿Por qué se rechazan ceros y vatios negativos?
Este endpoint exige muestras estrictamente positivas para que la NP quede bien definida sin tratar ceros de forma ad hoc. Los ceros por coasting deben filtrarse o sustituirse aguas arriba; se devuelve invalid_input y no se factura.
¿Cuánto cuesta la calculadora de potencia normalizada?
La herramienta en el navegador es gratuita. Las peticiones API usan saldo prepago KIT a $0.002 por llamada correcta; la entrada inválida no se factura.