root_mean_square.js

/**
 * 均方根(Root Mean Square, RMS)是一种均值函数,
 * 用于衡量一组数的大小,而不考虑它们的符号。
 * 它是输入数值平方的平均值的平方根。
 * 该算法的时间复杂度为 `O(n)`,即线性时间,与数组的长度成正比。
 *
 * @param {Array<number>} x 包含一个或多个数据点的样本
 * @returns {number} 均方根
 * @throws {Error} 如果 x 为空
 * @example
 * rootMeanSquare([-1, 1, -1, 1]); // => 1
 */
function rootMeanSquare(x) {
    if (x.length === 0) {
        throw new Error("rootMeanSquare 至少需要一个数据点");
    }

    let sumOfSquares = 0;
    for (let i = 0; i < x.length; i++) {
        sumOfSquares += Math.pow(x[i], 2);
    }

    return Math.sqrt(sumOfSquares / x.length);
}

export default rootMeanSquare;