将前5个值相加来计算偏移量

问题描述 投票:1回答:1

我正在使用node-red来获取称重传感器的信号。我使用MQTT(从我的python脚本)接收到称重传感器的值,然后我想保存来自MQTT的前5个值以计算称重传感器的偏移量。然后,当我有偏移量时,可以从msg.payload中减去它,以将称重传感器设置为0。

我已经尝试进行一个while循环来累积前5个值,但是即使前5个值都消失了,结果也会更新。即使循环结束,它似乎也应用了我的循环内的计算。

var offset0 = 0;
var i = 0;


while (i < 5) {
    offset0 = parseFloat(msg.payload) + offset0;
    i = i + 1;
}
offset0 = offset0 / 5;


msg.payload = offset0;
return msg;

msg在每个新的来自称重传感器的信息之后更新...或者我只想保留前5个值(5个用于进行测试,那么我想使用5个以上的点) 。

例如,这是我从称重传感器获得的数据:

1.93, 1.94, 1.95, 1.94, 1.96, 1.93, 1.88, 1.93. 

应该采用前5个:

1.93, 1.94, 1.95, 1.94, 1.96 

并且说出意思。

javascript node-red
1个回答
0
投票

您可以提取索引的其余部分,并将sum重置为零,并获取最后五个的平均值,即四位数。

var values = [1.93, 1.94, 1.95, 1.94, 1.96, 1.93, 1.88, 1.93],
    sum = 0,
    count = 0,
    i;

for (i = 0; i < values.length; i++) {
    if (i % 5 === 0) sum = 0;         // reset
    sum += values[i];
    if (i % 5 === 4) {                // take mean
        console.log(sum / 5);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.