Javascript 计算标准差-NaN误差

Javascript 计算标准差-NaN误差,javascript,Javascript,我试图计算标准偏差,但我一直得到一个NaN误差,这已经有一段时间了,但我似乎无法确定误差来自何处,任何帮助。阵列中的值为加速计值,例如-1.416170358657837 function classifyMotion() { /* array to hold last 300 samples */ var lastBatchOfSamples = []; if (devArray > 1200) { /* Clear if more than 60s worth of da

我试图计算标准偏差,但我一直得到一个NaN误差,这已经有一段时间了,但我似乎无法确定误差来自何处,任何帮助。阵列中的值为加速计值,例如-1.416170358657837

function classifyMotion() {

/* array to hold last 300 samples */
var lastBatchOfSamples = [];

if (devArray > 1200) {

    /* Clear if more than 60s worth of data */
    devArray.length = 0;
}

/* retrieve last 300 samples and store in own array*/
lastBatchOfSamples = devArray.slice(Math.max(devArray.length - 300));

function standardDeviation(values) {

    var avg = average(values);

    var squareDiffs = lastBatchOfSamples.map(function(value) {
        var diff = value - avg;
        var sqrDiff = diff * diff;
        return sqrDiff;
    });

    var avgSquareDiff = average(squareDiffs);

    var stdDev = Math.sqrt(avgSquareDiff);
    return stdDev;
}

function average(lastBatchOfSamples) {
    var sum = lastBatchOfSamples.reduce(function(sum, value) {
        return sum + value;
    }, 0);
    test2 = sum;

    var avg = sum / lastBatchOfSamples.length;
    return avg;
}
var deviation = standardDeviation(lastBatchOfSamples);

}

每次调用
average
时,您都会传入一个值,但是
average
不会按照定义接受任何参数,对不起。我正在再次编辑示例。顺便说一句,我将数组硬编码为1,2,3,4,5,作为返回答案的测试。它可能是数组中的数据类型吗?您硬编码了哪个数组?您正在将
传递给平均值,但没有在任何地方使用它。您还使用了一个术语的
Math.max
,该术语将始终返回该术语。您从不使用传递给
average
value
参数。
中的
(函数(总和,值)
是函数表达式中的命名参数,与
average
函数中传递的
完全无关。此外,该函数显然做的不仅仅是取
值的平均值
?@chiliNUT,nope average只是计算平均值。我传递了
lastBatchOfSamples
进入
average
函数,当我通过Excel传递相同的值时,该函数似乎或多或少相同。我注意到的一件事是,当加速度计静止时,它显然会生成负数,当平均值时,当然也会给出负数,并且每次调用
average
时都返回NaN传入一个值,但
average
不接受定义的任何参数Woops,抱歉。我在再次编辑示例之后。顺便说一句,我将数组硬编码为1,2,3,4,5,作为返回答案的测试。它可能是数组中的数据类型吗?您硬编码了哪个数组?您正在将
value
传入average,但不在任何地方使用它。您还使用了
Math.max
的1个术语,该术语将始终返回该术语。您从不使用传递给
average
value
参数。
中的
value
(函数(sum,value)
是函数表达式中的命名参数,与
average
函数中传递的
完全无关。此外,该函数显然做的不仅仅是取
值的平均值
?@chiliNUT,nope average只是计算平均值。我传递了
lastBatchOfSamples
进入
average
函数,当我通过Excel传递相同的值时,该函数似乎或多或少相同。我注意到的一件事是,当加速度计静止时,它显然会生成负数,当平均值时,当然也会给出负数,并返回NaN