Quiero calcular la media de la raíz cuadrada de una función en Python. Mi función es de la forma simple como la de y = f(x). x e y son las matrices.

Traté de Numpy y Scipy Docs y no pudo encontrar nada.

  • ¿Cuál es la función exacta que usted está tratando de calcular? Root-mean-cuadrado valor de y?
  • También sería de ayuda si usted puede agregar una matriz de ejemplo y solución de espera…
InformationsquelleAutor | 2016-12-04

1 Comentario

  1. 13

    Voy a suponer que usted desea calcular la expresión dada por la siguiente pseudocódigo:

    ms = 0
    for i = 1 ... N
        ms = ms + y[i]^2
    ms = ms / N
    rms = sqrt(ms)

    es decir, la raíz cuadrada de la media de los cuadrados de los valores de los elementos de y.

    En numpy, usted puede simplemente square y, tome su la media de y, a continuación, su raíz cuadrada de la siguiente manera:

    rms = np.sqrt(np.mean(y**2))

    Así, por ejemplo:

    >>> y = np.array([0, 0, 1, 1, 0, 1, 0, 1, 1, 1])  # Six 1's
    >>> y.size
    10
    >>> np.mean(y**2)
    0.59999999999999998
    >>> np.sqrt(np.mean(y**2))
    0.7745966692414834

    Hacer aclarar tu pregunta si te refieres a hacer algo más.

    • Muchas gracias. Todavía me pregunto algo. La definición parte en wikipedia dice, la RMS es en realidad un límite. Quiero decir que se va en y en. Pero en su respuesta, sólo el primer título fue considerado. Creo que descuidamos el resto de alguna manera durante el cálculo? Su respuesta obras. Pero yo pregunto esto para aclarar todo este asunto.
    • Si usted está tratando de calcular el valor RMS de una onda sinusoidal (es decir, f(x) es una función seno) o algo así, entonces usted necesita para realizar un integración. Esto se aproxima como un resumen aquí. El límite viene porque usted necesita tomar infinitesimalmente pequeños intervalos para su suma. En otras palabras, usted puede obtener una mejor estimación del valor RMS si utiliza una resolución más fina en x.
    • Advertencia: en numpy, si el número es demasiado grande en comparación de su tipo (dtype en python), el poder de la función puede devolver valores negativos. Para evitar esto, a veces es útil para convertir los valores. Ejemplo: >>np.sqrt(np.media(y.astype(np.dtype(np.int64)) ** 2 )). No es muy agradable en el código, pero va a hacer el trabajo!
    • Usted probablemente querrá tipo de fundición en flotar sin embargo, no en un mayor número entero. Desde RMS es en general un no-entero de todos modos, es mejor hacer y.astype(float).

Dejar respuesta

Please enter your comment!
Please enter your name here